home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / COMMUNIC / H191.ZIP / CA29-2.EXE / CASCRIPT.DOC < prev    next >
Text File  |  1992-12-03  |  278KB  |  8,800 lines

  1. COM-AND: IBM PC Communications Script Language
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.           ------------------------------------------
  13.           COM-AND:    Communications Script Language
  14.                  for the IBM PC
  15.           ------------------------------------------
  16.  
  17.  
  18.  
  19.  
  20.     COM-AND version 2.9 is copyright 1992 by CABER Software.  It is
  21.     distributed freely and may be copied by anyone for any number
  22.     of machines, for purposes of evaluation.  The author offers
  23.     COM-AND and its accessory programs as a package, as "shareware".
  24.     If you USE COM-AND after evaluating it, you MUST pay for it.
  25.  
  26.  
  27.  
  28.     The complete user license and registration information is to be
  29.     found in the file REGISTER.DOC.  Limitations on redistribution
  30.     of COM-AND are set out in the file VENDOR.DOC.    These two files
  31.     are included with the COM-AND program release.
  32.  
  33.  
  34.  
  35.                  CABER Software
  36.                  R. (Scott) McGinnis
  37.                  P.O. Box 3607 Mdse Mart
  38.                  Chicago, IL 60654-0607
  39.  
  40.                  GEnie, Delphi: TARTAN
  41.                  CIS .......... 73147,2665
  42.                  Internet ..... 73147.2665@compuserve.com
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54. Version 2.9: 921203
  55.  
  56. COM-AND: IBM PC Communications Script Language
  57.  
  58.  
  59.  
  60.     COM-AND version 2.9 is copyright 1992 by CABER Software.  All
  61.     rights are reserved world wide, excepting redistribution under the
  62.     shareware concept.  COM-AND is distributed freely and may be copied
  63.     by anyone for any number of machines, for purposes of evaluation.
  64.  
  65.  
  66.     Restrictions on redistribution are set out in the document file
  67.     VENDOR.DOC.  You may NOT distribute COM-AND or its documentation in
  68.     connection with ANY commercial venture, product, publication or
  69.     service without written approval from CABER Software.
  70.  
  71.  
  72.     COM-AND is distributed as shareware.  You may try COM-AND without
  73.     charge, to evaluate its usefulness to you.  You may evaluate COM-AND
  74.     for a period of up to 30 days.    If you continue to use COM-AND after
  75.     30 days, then you must pay for it.  Please read REGISTER.DOC for the
  76.     terms and conditions of the User License.
  77.  
  78.  
  79.     Additional benefits are available when you register COM-AND.  These
  80.     values include:
  81.  
  82.     .  A free Compuserve intro-pack
  83.     .  The Compuserve Automation script-set for COM-AND
  84.     .  A tailored dialing directory for your area code
  85.     .  Discounts on shareware magazines and books
  86.  
  87.     These offers are discussed in detail in REGISTER.DOC.  A simple
  88.     registration form is provided in the file REGISTER.FRM.  Please
  89.     print this form (or use REGISTER.CMD to print it), and include the
  90.     form with your payment.
  91.  
  92.  
  93.     The author supports COM-AND through electronic mail on the various
  94.     on-line services.  Several BBSes focused on COM-AND exist at this
  95.     time.  Voice support for COM-AND is also available from Support
  96.     EtCetera in Long Beach, CA.  Please read REGISTER.DOC for details
  97.     on support, and COM-AND BBSes.
  98.  
  99.  
  100.     CABER Software is a member of the Association of Shareware Profes-
  101.     sionals (ASP).    The ASP offers an ombudsman service to help you
  102.     resolve shareware related disputes with ASP members.  Please read
  103.     the file REGISTER.DOC for information on how to contact the ASP
  104.     Ombudsman.
  105.  
  106.  
  107.  
  108.  
  109. Version 2.9: 921203
  110.  
  111. COM-AND: IBM PC Communications Script Language
  112.  
  113.  
  114.                  Table of Contents
  115.                  -----------------
  116.  
  117. I.    COM-AND Introduction  ...................................... page 1
  118. II.    Script Introduction  ....................................... page 2
  119. III.    Definitions  ............................................... page 4
  120.  
  121.     A. Comments ................................................ page 4
  122.     B. Labels .................................................. page 4
  123.     C. Keywords ................................................ page 5
  124.     D. Commands ................................................ page 5
  125.     E. Strings ................................................. page 6
  126.     F. Numerics ................................................ page 7
  127.     G. States .................................................. page 8
  128.  
  129. IV.    Syntax    .................................................... page 9
  130. V.    Script Language Commands ................................... page 11
  131.  
  132.     Commands beginning "A"...................................... page 11
  133.     Commands beginning "B"...................................... page 14
  134.     Commands beginning "C"...................................... page 15
  135.     Commands beginning "D"...................................... page 20
  136.     Commands beginning "E"...................................... page 26
  137.     Commands beginning "F"...................................... page 29
  138.     Commands beginning "G"...................................... page 39
  139.     Commands beginning "H"...................................... page 43
  140.     Commands beginning "I"...................................... page 44
  141.     Commands beginning "J"...................................... page --
  142.     Commands beginning "K"...................................... page 52
  143.     Commands beginning "L"...................................... page 52
  144.     Commands beginning "M"...................................... page 54
  145.     Commands beginning "N"...................................... page 59
  146.     Commands beginning "O"...................................... page 60
  147.     Commands beginning "P"...................................... page 62
  148.     Commands beginning "Q"...................................... page 63
  149.     Commands beginning "R"...................................... page 64
  150.     Commands beginning "S"...................................... page 67
  151.     Commands beginning "T"...................................... page 77
  152.     Commands beginning "U"...................................... page 79
  153.     Commands beginning "V"...................................... page 79
  154.     Commands beginning "W"...................................... page 80
  155.     Commands beginning "X"...................................... page --
  156.     Commands beginning "Y"...................................... page --
  157.     Commands beginning "Z"...................................... page --
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164. Version 2.9: 921203
  165.  
  166. COM-AND: IBM PC Communications Script Language
  167.  
  168.  
  169.                  Table of Contents
  170.                  -----------------
  171.  
  172. VI.    SET Commands  .............................................. page 85
  173.  
  174.     A. Basic set ............................................... page 85
  175.     B. SET ASCII ............................................... page 101
  176.     C. SET BPLUS ............................................... page 102
  177.     D. SET KERMIT .............................................. page 103
  178.     E. SET ZMODEM .............................................. page 104
  179.  
  180. VII.    String Intrinsics  ......................................... page 105
  181. VIII.    Script Errors .............................................. page 109
  182. IX.    ASPECT 1.x and PROCOMM 2.x scripts ......................... page 110
  183. X.    Program Requirements ....................................... page 112
  184. XI.    Program and Author Information    ............................ page 113
  185.  
  186.  
  187.                 Appendices
  188.                 ----------
  189.  
  190. A.    Sample scripts    ............................................ page 114
  191. B.    Host and BBS scripts  ...................................... page 117
  192. C.    External Protocol Drivers  ................................. page 118
  193. D.    Encoded Music  ............................................. page 120
  194. E.    File transfer error numbers  ............................... page 123
  195. F.    EBL  ....................................................... page 125
  196. G.    Manual setting and scripts ................................. page 126
  197.  
  198.     1. Alt-S (Setup window) .................................... page 126
  199.     2. Alt-O (Options window) .................................. page 127
  200.     3. Alt-P (Parameters window) ............................... page 128
  201.     4. Alt-K (KERMIT defaults window) .......................... page 129
  202.     5. Alt-J (Colors window) ................................... page 129
  203.     6. Help (General Help list) ................................ page 130
  204.  
  205. H.    STACK and Macro keycodes  .................................. page 131
  206. I.    Dynamic string variables ................................... page 132
  207. J.    Flow control methods ....................................... page 134
  208. K.    Machine language subroutines ............................... page 136
  209. L.    CACMP ...................................................... page 140
  210. M.    Script Language (version 1.x) .............................. page 141
  211. N.    Language Summary ........................................... page 144
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219. Version 2.9: 921203
  220.  
  221. COM-AND: IBM PC Communications Script Language                 Page   1
  222.  
  223.  
  224. I.    COM-AND Introduction
  225.  
  226.  
  227.     COM-AND for the IBM PC and compatibles is a communications program
  228.     for use by itself, or for use with several integrated accessory
  229.     programs (which themselves may be used independent of COM-AND).
  230.     COM-AND provides standard comm program functions:  a dialing
  231.     directory, macros, disk logging, binary and ASCII file transfers,
  232.     and most particularly: scripted execution.
  233.  
  234.  
  235.     COM-AND Version 2.9 executes as a CRT based comm program either in
  236.     25 line text mode on a CGA or monochrome screen, or 25/43(50) line
  237.     mode on an EGA(VGA) display.  When an accessory is loaded through
  238.     COM-AND (or when COM-AND is loaded by an accessory), most of the
  239.     functions of COM-AND are available through the accessory.
  240.  
  241.  
  242.     COM-AND and its bundled scripts may be copied freely and distributed
  243.     to anyone for any number of machines.  The author offers COM-AND as
  244.     "shareware".  If the program is used after a period of 30 days, you
  245.     MUST pay for it.
  246.  
  247.  
  248.     COM-AND provides a script language for automation of certain tasks.
  249.     COM-AND is distributed with a KERMIT server, a HOST mode, a Bulletin
  250.     board, a file manager, and a LEARN MODE... all as scripts.  Scripts
  251.     may be written for COM-AND by anyone, requiring only an editor to
  252.     produces ASCII files.  COM-AND executes scripts written for the
  253.     very popular PROCOMM 2.x and Procomm Plus 1.x scripts, as well.
  254.  
  255.  
  256.     This document discusses scripted execution, and the COM-AND Script
  257.     Language.  The script language has grown over the years to the point
  258.     where its documentation requires a separate file.
  259.  
  260.  
  261.     A detailed guide to installation, and an introduction to modem
  262.     communication is to be found in the document INTRO.DOC.  For manual
  263.     use of COM-AND, and functional reference, the reader is referred to
  264.     the document COM-AND.DOC.  The internal editor is documented in
  265.     CAEDIT.DOC, included with this release.
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274. Version 2.9: 921203
  275.  
  276. COM-AND: IBM PC Communications Script Language                 Page   2
  277.  
  278.  
  279. II.    Script Introduction
  280.  
  281.  
  282.     The script processor supports automation of certain manual tasks,
  283.     and COM-AND to run unattended (if you have tested the script !!!).
  284.     Scripts are invoked in several ways:
  285.  
  286.     o    at load time:
  287.  
  288.         .. COM-AND.CMD, if present in the current directory or the
  289.            subdirectory indicated by the 'COM-AND=' environment
  290.            variable, is executed immediately;
  291.  
  292.         .. the /F switch in the run command may specify a script to
  293.            be executed immediately (after COM-AND.CMD, if present);
  294.  
  295.     o    interactively (through F2) as a script
  296.  
  297.     o    interactively (through F1) as an accessory or part of one
  298.  
  299.     o    a script may be attached to a dialing directory entry, to
  300.         be executed upon successful connection
  301.  
  302.     o    through a macro and similar methods
  303.  
  304.  
  305.     Script commands are read by COM-AND from an ASCII file (word pro-
  306.     cessor files are not usually ASCII files!).  COM-AND's internal text
  307.     editor (Alt-Q), programmer's text editors, and EDLIN (included with
  308.     DOS) may be used to create and modify a script file.  If you wish to
  309.     use a word processor to update a script, first ensure the particular
  310.     word processor can write an ASCII file (often called non-document,
  311.     perhaps even called ASCII).
  312.  
  313.  
  314.     Once a script begins, execution of COM-AND is automatic, driven by
  315.     the script.  However, the ESC key may be used to terminate the
  316.     script at most any time (depending on the script.  The script author
  317.     might make ESC unusable).  During dialing, two ESCs are needed...
  318.     one to terminate the dial function, and the second to end script.
  319.  
  320.  
  321.     Generally speaking, a script usually takes the form:
  322.  
  323.         <perform some action>
  324.         <wait for an identifiable response>
  325.         <perform some action...
  326.         ... and so on
  327.  
  328.  
  329. Version 2.9: 921203
  330.  
  331. COM-AND: IBM PC Communications Script Language                 Page   3
  332.  
  333.  
  334. II.    Script Introduction (continued)
  335.  
  336.  
  337.     For example, a script might dial a number listed in the dialing
  338.     directory and wait for the "ID = " response from the dialed host.
  339.     The next action would be to send the logon ID, with a carriage
  340.     return and await a prompt for a password.
  341.  
  342.  
  343.     The scripts included with COM-AND are examples of such simple
  344.     scripts.  However:  the COM-AND script language is not limited to
  345.     communications related tasks...  programs may be loaded and passed
  346.     parameters, screen windows may be opened and scrolled, and so on.
  347.     A nontrivial BBS has been written using COM-AND's scripting, and is
  348.     provided with the distribution for the interested (and wary)!
  349.  
  350.  
  351.     It is taken for granted that the script programmer is acquainted with
  352.     the computer and telecommunications environment in general, and the
  353.     COM-AND program in particular.    Much of the script language facility
  354.     revolves around making the features of COM-AND available to the
  355.     programmer.  The remainder of the language makes the computer (e.g.
  356.     read and write files), and the communications line (e.g.  read and
  357.     write lines of text) available to the programmer.
  358.  
  359.  
  360.     Details of the features of COM-AND are discussed in the COM-AND.DOC
  361.     document.  Most of the discussion to follow assumes familiarity with
  362.     COM-AND.DOC.
  363.  
  364.  
  365.     The next few pages define terms used in discussing scripts and script
  366.     language elements.  Notational symbols are then defined.  Then,
  367.     script language elements are presented in detail.  Appendix M
  368.     summarizes the version 1.x script language (no longer supported).
  369.     Appendix N summarizes the version 2 language.  Sample scripts are
  370.     presented in Appendix A.
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384. Version 2.9: 921203
  385.  
  386. COM-AND: IBM PC Communications Script Language                 Page   4
  387.  
  388.  
  389. III.    Definitions
  390.  
  391.  
  392.     A. Comments:
  393.  
  394.        Comments may be used (and are highly recommended!) alone on a
  395.        line, on a command line (after the command) or on a label line
  396.        (after the label).  A comment begins with a semi-colon or asterisk
  397.        and extends to the end of the line.
  398.  
  399.        Blank lines are also treated as comments, for phrasing.  Top-of-
  400.        form, appearing in the first column, is treated as a comment.
  401.  
  402.  
  403.     B. Labels:
  404.  
  405.        Labels are character strings terminated with a colon, not
  406.        including the characters:  blank, comma(,), exclamation (!),
  407.        number sign (#), dollar sign ($), percent sign (%), ampersand (&),
  408.        apostrophe ('), double quote ("), left and right parenthesis,
  409.        asterisk (*), plus (+), hyphen (-, minus), right slash (/), and
  410.        semi-colon(;).
  411.  
  412.        Only the first 8 characters of the label are significant to the
  413.        script processor; if two labels match for the first 8 characters,
  414.        the one closest to the beginning of the script is used, and the
  415.        second label ignored.
  416.  
  417.        Case is not significant in labels.
  418.  
  419.        Comments are allowed on a line with a label (comments begin with
  420.        semi-colon or asterisk and extending to the end of the line).
  421.  
  422.        Commands are not allowed on a line with a label.
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439. Version 2.9: 921203
  440.  
  441. COM-AND: IBM PC Communications Script Language                 Page   5
  442.  
  443.  
  444. III.    Definitions (continued)
  445.  
  446.  
  447.     C. Keywords:
  448.  
  449.        Keywords are alphanumeric character strings terminated by a blank,
  450.        a comma, a left parenthesis, or a semi-colon.  Only the first 4
  451.        characters of the keyword are significant to the script processor
  452.        (where keywords are the same for the first 4 letters, the last
  453.        letter is used to distinguish them).
  454.  
  455.  
  456.        Case is not significant in keywords.
  457.  
  458.  
  459.     D. Commands:
  460.  
  461.        Commands are structured:  <keyword> followed by argument(s) (if
  462.        any).  Delimiters between command arguments are blank and comma.
  463.        Each command is a line by itself (with the exception of the IF
  464.        and ELSE statements which may carry a second command).  Comments
  465.        are allowed after the command (comments begin with semi-colon or
  466.        asterisk and extend to the end of the line).
  467.  
  468.  
  469.        COM-AND implements a stack for GOSUB, IF, SWITCH, FOR, DO and
  470.        WHILE commands.  This allows nesting of these commands up to 20
  471.        levels.  A 'stack overflow' message is issued when nesting of
  472.        more than 20 is attempted.  A 'stack underflow' message is issued
  473.        when a RETURN is encountered for which no corresponding GOSUB
  474.        preceded.
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494. Version 2.9: 921203
  495.  
  496. COM-AND: IBM PC Communications Script Language                 Page   6
  497.  
  498.  
  499. III.    Definitions (continued)
  500.  
  501.  
  502.     E. Strings:
  503.  
  504.        String arguments are of two kinds:  literal and variable.  Literal
  505.        strings are enclosed in double quotes (").  The accent grave (`)
  506.        is used in a literal string to force the next character (e.g. the
  507.        string "`"" is a literal consisting of a double quote by itself).
  508.  
  509.  
  510.        String variables are referred to as S0, S1, ...  S29.  Each string
  511.        variable is 80 characters wide, and may be set with the Sx =,
  512.        ASSIGN, GET, RGET, and other statements.  They are set to blank
  513.        when the script begins (but are not reset to blanks when EXECUTE
  514.        or FCALL moves the script processor to a new script file).
  515.  
  516.  
  517.        Strings are manipulated internally exactly as given.  However,
  518.        when issued (to the console or out the comm port, or in some cases
  519.        to disk), or used in WHEN string, certain edits are performed:
  520.  
  521.        o       Trailing blanks are trimmed
  522.        o       "!" by itself (except "!!") is translated into a
  523.            carriage return
  524.        o       "^x" (except ^^) where 'x' is character "@" through "`"
  525.            is translated into the corresponding control character
  526.        o       Certain strings are treated as "intrinsic"s.  Refer
  527.            to chapter VII of this document for further discussion.
  528.  
  529.        Refer below to the "Sx = <expression>" discussion on page 77 for
  530.        details on string expressions.
  531.  
  532.  
  533.        Another set of string variables may be dynamically allocated by a
  534.        script (or scripts).  These variables are referred to as V0, V1,
  535.        ...    Vx, where 'x' is determined by the allocating script.
  536.        Dynamic string variables may be used anywhere static variables are
  537.        used, AFTER A SCRIPT ALLOCATES THEM.  Refer to appendix 'I' for a
  538.        discussion of these variables and their use.
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549. Version 2.9: 921203
  550.  
  551. COM-AND: IBM PC Communications Script Language                 Page   7
  552.  
  553.  
  554. III.    Definitions (continued)
  555.  
  556.  
  557.     F. Numerics:
  558.  
  559.        Numeric arguments are of two kinds:    literal and variable.  The
  560.        literal numerics are values alone, within double quotes, or as
  561.        a string within a string variable.  Decimal values in the range
  562.        -32,768 to 32,767 may be expressed.    Hexadecimal values may be
  563.        specified using the 'C' convention (e.g.  0xffff is -1).
  564.  
  565.  
  566.        Numeric variables are referred to as N0, N1, ...  N99.  Each
  567.        numeric variable is capable of storing the value -32,768 to
  568.        32,767.  All are set to zero when the script begins (but not
  569.        reset to zeroes when an EXECUTE or FCALL statement moves the
  570.        script processor to a new script file).
  571.  
  572.  
  573.        Refer below to the "Nx = <expression>" discussion on page 59
  574.        for details on numeric expressions.    Numeric expressions are
  575.        allowed in place of single numeric values (where a value is
  576.        required) in all commands except:  ADD, SUB, MUL and DIV, IF
  577.        EQ/LT/...  and IF ZERO.  An expression may be used in these
  578.        commands only if it is entirely contained within parentheses.
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604. Version 2.9: 921203
  605.  
  606. COM-AND: IBM PC Communications Script Language                 Page   8
  607.  
  608.  
  609. III.    Definitions (continued)
  610.  
  611.  
  612.     G. States:
  613.  
  614.        o    String variables are set to blank at the start of a script.
  615.  
  616.        o    Numeric variables are set to zero at the start of a script.
  617.  
  618.        o    EXECUTE does not reset string or numeric variables or clear
  619.         any conditions (SUCCESS/FAILED/WAITFOR/etc).  Neither does
  620.         EXECUTE clear WHEN settings.
  621.  
  622.        o    EXECUTE clears any IF and SWITCH function and GOSUB stack.
  623.        o    EXECUTE clears any ON ESCAPE or ON SILENCE conditions.
  624.  
  625.        o    FCALL does not allow 'branch-back' from a called file to a
  626.         label in the calling file.  FCALL does not reset the ON
  627.         ESCAPE implicit GOSUB (which potentially is a branch-back),
  628.         so be careful!.
  629.  
  630.        o    GOTO must not be used to enter an IF clause or SWITCH case,
  631.         even from within an IF clause or SWITCH.
  632.  
  633.        o    Received text is not processed until RGET, PAUSE or WAITFOR
  634.         instructions are performed.
  635.  
  636.        o    Keystrokes entered during a script are transmitted out the
  637.         comm port (unless HITKEY or SET TTHRU has been invoked).
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659. Version 2.9: 921203
  660.  
  661. COM-AND: IBM PC Communications Script Language                 Page   9
  662.  
  663.  
  664. IV.    Syntax
  665.  
  666.  
  667.     The chapter defines symbols used in command syntax descriptions.
  668.     Of necessity, some may seem cryptic at first...  bear with me,
  669.     please.
  670.  
  671.  
  672.     ->         Author's note.  A command highlighted with '->'
  673.              IS compatible with ASPECT 1.x and PROCOMM 2.x scripting.
  674.  
  675.     *         Author's note.  A command highlighted with '*'
  676.              is documented for ASPECT compatiblity, but not
  677.              implemented in this version of COM-AND.
  678.  
  679.     [A]         optional keyword A
  680.  
  681.     (A!B!C...)   Required choice: A or B or C ...
  682.  
  683.     Sx         String variable S0, S1, S2 ...S29
  684.     Vx         String variable (dynamic) V0, V1, V2 ...V99
  685.     Nx         Numeric variable N0, N1, N2 ...N99
  686.  
  687.  ->    <label>      Label identifier     (1) literal value (e.g. LABEL)
  688.  ->                     (2) a string variable (e.g.  S0)
  689.  ->                         containing a label name
  690.                      (3) a quoted string (e.g.  "...")
  691.  
  692.  ->    <string>     Textual value, i.e. (1) a quoted string (e.g. "...")
  693.  ->                     (2) a string variable (e.g. S0)
  694.                      (3) a substring (e.g. S0(4:5),
  695.                          being position 4 through 5)
  696.                      (4) a string expression
  697.  
  698.  ->    <number>     Numeric value, i.e. (1) a quoted number (e.g. "4")
  699.  ->                     (2) a literal number (e.g. 555,
  700.                          or hex value e.g. 0xff)
  701.  ->                     (3) a numeric variable (e.g. N5)
  702.                      (4) a string variable (e.g. S0),
  703.                          which contains the value.
  704.                      (5) a numeric expression
  705.  
  706.     <row>         Numeric value representing a row number (0-24 or 0-42
  707.              according to the screen mode).  Expressions (e.g.
  708.              N0+1) are legitimate and accepted.
  709.  
  710.     <col>         Numeric value representing a column number (0-79).
  711.              Expressions are legitimate and accepted.
  712.  
  713.  
  714. Version 2.9: 921203
  715.  
  716. COM-AND: IBM PC Communications Script Language                 Page  10
  717.  
  718.  
  719. IV.    Syntax (continued)
  720.  
  721.  
  722.     <len>         Numeric value representing a length (0-79).  Expres-
  723.              sions (e.g. N0+1) are legitimate and accepted.
  724.  
  725.     <color>      Color keyword or value.  Color values are:
  726.  
  727.              0      Black            8    DkGrey (Dark Grey)
  728.              1      Blue               9    LtBlue
  729.              2      Green           10    LtGn (Light Green)
  730.              3      Cyan              11    LtCyan
  731.              4      Red              12    LtRed
  732.              5      Magenta          13    LtMagenta
  733.              6      Brown           14    Yellow
  734.              7      LtGrey (Light Grey) 15    White
  735.  
  736.              Color keywords are:
  737.  
  738.              DEFAULT:  This keyword specifies the foreground/back-
  739.                    ground attr set through Alt-J for menus.
  740.  
  741.              CONTRAST: This keyword specifies the foreground/back-
  742.                    ground attr (reversed) as specified through
  743.                    Alt-J for menus.
  744.  
  745.              TEXT:     This keyword specifies the foreground/back-
  746.                    ground as specified through Alt-J for text.
  747.  
  748.              TCONTRAST: This keyword specifies the foreground/back-
  749.                 ground (reversed) text as specified in Alt-J.
  750.  
  751.  ->    <attr>         A foreground/background attribute.  This may be used in
  752.  ->             one of two forms: a simple value 0-255 (background*16+
  753.              foreground), and a parenthesized pair.  For example:
  754.  
  755.                    ([<color>] <color>).
  756.              or        ([DEFAULT] DEFAULT)
  757.              or        ([CONTRAST] CONTRAST)
  758.              or        any mix of the above
  759.  
  760.              For example "15" and "(black white)" are equivalent
  761.              attributes to COM-AND.  "(DEFAULT)" sets the attribute
  762.              the default set through Alt-J for menu windows.
  763.  
  764.     #         A single digit
  765.  
  766.     (#)         A digit within literal parenthesis
  767.  
  768.  
  769. Version 2.9: 921203
  770.  
  771. COM-AND: IBM PC Communications Script Language                 Page  11
  772.  
  773.  
  774. V.    Script Language Commands
  775.  
  776.  
  777.     ACCESSORY <string>             or ACCESSORY <number>
  778.  
  779.          The ACCESSORY statement invokes the accessory directory to (op-
  780.          tionally) execute a new script, and (optionally) load a program.
  781.          The accessory directory entry number is specified in <string>.
  782.          <String> is formatted exactly as with the F1 menu; it consists
  783.          of an entry number 1-50.  Examples:
  784.  
  785.          ACCESSORY 1         ; Load entry 1
  786.          ; Nothing past this point in the script is performed.
  787.  
  788.          Each accessory entry specifies:
  789.  
  790.          o         A drive:subdirectory (optional)
  791.          o         A script to execute (optional)
  792.          o         A program invocation (optional)
  793.  
  794.          Accessory entries are constructed and modified with the 'r' sub-
  795.          command of the F1 menu or SET ACCESSORY script commands.
  796.  
  797.          The ACCESSORY command terminates the current script file.    The
  798.          current script file is closed (and not re-entered when the new
  799.          file completes).  Any IF/GOSUB/SWITCH commands in effect are
  800.          cleared.
  801.  
  802.          Unlike EXECUTE, all strings and conditions are cleared when the
  803.          Accessory script (if there is one) begins.  Parameters may not
  804.          therefore be passed to an accessory script (yet!).
  805.  
  806.  ->    ADD Nx Ny Nz
  807.  
  808.          The ADD command performs the instruction:    Nz = Nx+Ny.  No error
  809.          checking is performed; should the value exceed the range of a
  810.          numeric variable, results are unpredictable.  Example:
  811.  
  812.  ->         ADD N1 N2 N3         ; N3 = N1+N2
  813.  
  814.          An expression may be used for Nx or Ny if it is entirely con-
  815.          tained within parentheses.
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824. Version 2.9: 921203
  825.  
  826. COM-AND: IBM PC Communications Script Language                 Page  12
  827.  
  828.  
  829. V.    Script Language Commands (continued)
  830.  
  831.  
  832.  ->    ALARM [<number>]
  833.  
  834.          The ALARM command sounds COM-AND's alarm.  The alarm continues
  835.          for the time in seconds specified through the Alt-S 'Display
  836.          duration', unless overridden by the optional numeric argument.
  837.          Any keypress terminates the alarm.  Example:
  838.  
  839.  ->         ALARM 10                 ; Annoy for 10 seconds
  840.  
  841.     ALOAD <string>
  842.  
  843.          The ALOAD statement loads a new Accessory Definition file (F1).
  844.          The ALOAD command requires a file name in <string>.  <String>
  845.          contains an unqualified file.ext (or may contain a fully pathed
  846.          file name).  Example:
  847.  
  848.          ALOAD "COM-AND.ACC"             ; Load original accessory def
  849.          ALOAD "C:\SOURCE\COM-AND.ACC"   ; Load special definitions
  850.  
  851.          Note:  The file name is limited to 27 characters in length.
  852.          See also LOAD ACCESSORY.
  853.  
  854.     ALLOCATE <number>
  855.  
  856.          The ALLOCATE statement allocates up to 100 dynamic variables
  857.          referenced V0, V1, ... for use by the current and subsequent
  858.          scripts.  ALLOCATE returns success/failure according to avail-
  859.          able memory.  Please refer to Appendix I for a discussion of
  860.          dynamic allocation of variables.  Example:
  861.  
  862.          ALLOCATE 100             ; Allocate a dynamic area
  863.  
  864.          Note:  The number of dynamic variables is limited to 100.
  865.  
  866.     ANAME Sx <number>
  867.  
  868.          The ANAME command returns the name field from the accessory
  869.          directory.  A directory number (1-50) must be specified.
  870.          Example:
  871.  
  872.          ANAME S0 5              ; Fetch the name from # 5
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879. Version 2.9: 921203
  880.  
  881. COM-AND: IBM PC Communications Script Language                 Page  13
  882.  
  883.  
  884. V.    Script Language Commands (continued)
  885.  
  886.  
  887.     APGM Sx <number>
  888.  
  889.          The APGM command returns the program invocation field from the
  890.          accessory directory.  A directory number (1-50) must be speci-
  891.          fied.  Example:
  892.  
  893.          APGM S0 5                 ; Fetch the pgm from # 5
  894.  
  895.     ASCRIPT Sx <number>
  896.  
  897.          The ASCRIPT command returns the script field from the accessory
  898.          directory.  A directory number (1-50) must be specified.
  899.          Example:
  900.  
  901.          ASCRIPT S0 5             ; Fetch the name from # 5
  902.  
  903.  ->    ASSIGN Sx <string>
  904.  
  905.          The ASSIGN statement sets a string variable to a value.  The
  906.          value may be another string variable, a literal textual value
  907.          (a quoted string), or a substring.  Examples:
  908.  
  909.  ->         ASSIGN S0 "MAIL"        ; S0 now contains "MAIL"
  910.  ->         ASSIGN S1 S0         ; S1 now contains "MAIL"
  911.          ASSIGN S2 S0(0:1)         ; S2 now contains "MA" (char0:char1)
  912.  
  913.     ASUBDIR Sx <number>
  914.  
  915.          The ASUBDIR command returns the subdirectory field from the
  916.          accessory directory.  A directory number (1-50) must be
  917.          specified.  Example:
  918.  
  919.          ASUBDIR S0 5             ; Fetch the subdir from # 5
  920.  
  921.  ->    ATGET row col attr len Sx
  922.  
  923.          The ATGET statement performs the GET function, i.e.  reading
  924.          the keyboard for a length, with cursor positioning and color
  925.          control.  Example:
  926.  
  927.  ->         ATGET 0 0 15 5 S5         ; Read up to 5 chars into S5 from 0,0
  928.          ATGET 0 0 (black white) 5 S5
  929.  
  930.          Note: the cursor is left positioned after the last character
  931.          read.
  932.  
  933.  
  934. Version 2.9: 921203
  935.  
  936. COM-AND: IBM PC Communications Script Language                 Page  14
  937.  
  938.  
  939. V.    Script Language Commands (continued)
  940.  
  941.  
  942.  ->    ATOI Sx Nx
  943.  
  944.          The ATOI statement converts a value in a string variable to a
  945.          numeric variable.    If no numeric value is found, or the value
  946.          exceeds the range for numeric variables, the ERROR flag is set.
  947.          Examples:
  948.  
  949.  ->         ASSIGN S0 "1234"        ; S0 now contains "1234"
  950.  ->         ATOI S0 N1          ; N1 now contains 1234
  951.          ATOI S2(2:3) N2         ; N2 now contains 34 (char2:char3)
  952.  
  953.  ->    ATSAY row col attr <string>
  954.  
  955.          The ATSAY statement performs the MESSAGE function, i.e. writing
  956.          to the screen, with cursor positioning and color control.
  957.          You may ATSAY outside of the effective DWINDOW.  Example:
  958.  
  959.  ->         ATSAY 0 0 15 "text"     ; Write at 0,0; white on black
  960.          ATSAY 0 0 (black white) S5
  961.  
  962.          Note: the cursor is left positioned after the last character
  963.          written.
  964.  
  965.     ATSCR row col len Sx
  966.  
  967.          The ATSCR statement reads the screen starting at the position
  968.          indicated by <row> and <col>, for the length specified into the
  969.          string variable Sx.  The screen display characters (not their
  970.          color attributes) are copied into Sx.  Example:
  971.  
  972.          ATSCR 2 0 80 S5         ; Read the whole of line 2 into S5
  973.  
  974.  ->    BOX row col row col attr
  975.  
  976.          The BOX statement draws a box over a region on the screen,
  977.          filling the space within with a specified color.  The first and
  978.          second arguments specify the row/column of the top-left of the
  979.          region.  The third and fourth arguments specify the row/column
  980.          of the bottom-right of the region.  The last argument specifies
  981.          the color attribute to use for box lines and center.
  982.  
  983.  ->         BOX 0 10,10 20,20 15    ; White on black:    narrow box
  984.          BOX 0 10,10 20,20 (black white)
  985.  
  986.          See also DBOX.
  987.  
  988.  
  989. Version 2.9: 921203
  990.  
  991. COM-AND: IBM PC Communications Script Language                 Page  15
  992.  
  993.  
  994. V.    Script Language Commands (continued)
  995.  
  996.  
  997.  ->    BREAK [<number>]
  998.  
  999.          The BREAK statement performs a true break.  The length of the
  1000.          BREAK is set (by default) through the Alt-S menu.    The length
  1001.          of the signal optionally may be specified in milliseconds.
  1002.          Example:
  1003.  
  1004.  ->         BREAK 1500          ; Send a 1.5 second break
  1005.  
  1006.  ->    BYE
  1007.  
  1008.          The BYE statement terminates both the script and COM-AND,
  1009.          leaving DTR as-is (connection, if made, is not broken).  It may
  1010.          be coded at any level (for example within a subroutine reached
  1011.          through a call from a subroutine).  Example:
  1012.  
  1013.  ->         BYE             ; Leave connection open
  1014.          ; Nothing past this point in the script is executed
  1015.  
  1016.          Note also the QUIT command.
  1017.  
  1018.  ->    CASE (<string>!<numeric>)
  1019.  
  1020.          The CASE statement must be contained within the domain of a
  1021.          SWITCH/ENDSWITCH pair.  The CASE statement specifies a value
  1022.          against which the string variable identified is tested.  Case
  1023.          is not significant in the comparison.  If the variable matches
  1024.          the given string (shift case excluded), the statements following
  1025.          the CASE are executed, until an ENDCASE is encountered.  Refer
  1026.          to SWITCH for an example.
  1027.  
  1028.          Note: the argument of a CASE statement may be a literal or
  1029.          variable value.  Both string and numeric variables are allowed.
  1030.          String substring extraction (e.g.    S0(5:10)) is also supported.
  1031.  
  1032.  ->    CHDIR <string>
  1033.  
  1034.          The CHDIR statement changes the current default subdirectory
  1035.          used for unqualified file name references.  Examples:
  1036.  
  1037.  ->         CHDIR "\COM-AND"        ; Change path on the current drive
  1038.          CHDIR "C:\COM-AND"      ; Change drive and path
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044. Version 2.9: 921203
  1045.  
  1046. COM-AND: IBM PC Communications Script Language                 Page  16
  1047.  
  1048.  
  1049. V.    Script Language Commands (continued)
  1050.  
  1051.  
  1052.  ->    CLEAR [<attr>]
  1053.  
  1054.          The CLEAR statement clears the screen.  It optionally changes
  1055.          the background and foreground colors.  The <attr> argument
  1056.          specifies a new background color (if present), and a new
  1057.          foreground color.    Note: a foreground argument requires a
  1058.          background argument.  Example:
  1059.  
  1060.  ->         CLEAR 15             ; Clear screen, set white on black
  1061.          CLEAR (BLACK RED)         ; Clear screen, set red on black
  1062.          CLEAR             ; Clear screen, leave colors alone
  1063.  
  1064.          CLEAR sets the cursor to the top left of the scrolling region,
  1065.          either as defined by default, or through the DWINDOW command.
  1066.  
  1067.     CLOG OPEN <string>
  1068.     CLOG CLOSE
  1069.     CLOG <string>
  1070.  
  1071.          The CLOG subcommands OPEN a call-log file by name, CLOSE an
  1072.          open call-log file, and write to the call-log (if open).
  1073.  
  1074.          The CLOG OPEN command requires a file name.  The <string> is
  1075.          limited to 26 characters in length.  It may contain a fully
  1076.          pathed file name.    A search for the given name is made on the
  1077.          current drive:subdirectory and the one specified by the
  1078.          'COM-AND=' environment variable.  Example:
  1079.  
  1080.          CLOG OPEN "Log.txt"     ; Open calllog file and start logging
  1081.          CLOG OPEN "E:log.txt"   ; Open calllog on a specific drive
  1082.  
  1083.          CLOG OPEN sets the SUCCESS/FAILURE condition (tested with the
  1084.          IF statement).
  1085.  
  1086.          Note: the script write may choose to open a call-log file by
  1087.          name (closing the default call-log, if one is established), or
  1088.          alternatively to accept the user's discretion in the matter.
  1089.          The CLOG command writes to the call-log only if it is open.  If
  1090.          the script writer does not open the call-log (CLOG OPEN or SET
  1091.          CALLLOG ON), CLOG write statements are ignored unless call-
  1092.          logging has been enabled BY THE USER.
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099. Version 2.9: 921203
  1100.  
  1101. COM-AND: IBM PC Communications Script Language                 Page  17
  1102.  
  1103.  
  1104. V.    Script Language Commands (continued)
  1105.  
  1106.  
  1107.  ->    COLOR <attr>
  1108.  
  1109.          The COLOR statement changes the foreground (and optionally the
  1110.          background display colors.  The first argument specifies a new
  1111.          background color.    The second argument specifies a new fore-
  1112.          ground color.  Note: a background argument requires a fore-
  1113.          ground argument.  Example:
  1114.  
  1115.  ->         COLOR 15             ; Set white on black
  1116.          COLOR (0 15)         ; Set white on black
  1117.          COLOR (BLACK RED)         ; Set red on black
  1118.          COLOR (RED)         ; Set foreground to red
  1119.  
  1120.     COMBASE <port> Nx
  1121.  
  1122.          The COMBASE statement returns the base address for the given
  1123.          port (port is COM1, COM2...).  This value may be set through
  1124.          Alt-P (manually) or SET COMBASE in a script.
  1125.  
  1126.          COMBASE COM1 N0         ; Read current base address
  1127.  
  1128.     COMPARMS Sx
  1129.  
  1130.          The COMPARMS statement returns the current communications
  1131.          parameters, formatted:  "bbbb,p,d,s,COMx" where "bbbb" is
  1132.          port speed, "p" is parity (E/O/N), "d" is the number of data
  1133.          bits (7/8), "s" is the number of stop bits (1/2), and "COMx"
  1134.          is the comm port.    Example:
  1135.  
  1136.          COMPARMS S4         ; Read current settings
  1137.  
  1138.     COMVECTOR <port> Nx
  1139.  
  1140.          The COMVECTOR statement returns the vector # (0-7) for the
  1141.          given port (port is COM1, COM2...).  This value may be set
  1142.          through Alt-P (manually) or SET COMVECTOR in a script.
  1143.  
  1144.          COMVECTOR COM1 N0         ; Read current vector #
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154. Version 2.9: 921203
  1155.  
  1156. COM-AND: IBM PC Communications Script Language                 Page  18
  1157.  
  1158.  
  1159. V.    Script Language Commands (continued)
  1160.  
  1161.  
  1162.     CONCAT Sx [(##)!*] <string>
  1163.  
  1164.          The CONCAT statement concatenates two strings.  The first string
  1165.          is the target variable (Sx).  The second string is the text to
  1166.          be concatenated.  Concatenation may take place at a fixed posi-
  1167.          tion in the target, or the target may be backscanned for the
  1168.          last nonblank character.  Example:
  1169.  
  1170.          S1 = "MAIL"             ; Set file name 1st 4 char
  1171.          CONCAT S0 "_DATE"(0:1)  ; Take month num from date
  1172.          CONCAT S0 "_DATE"(3:4)  ; Take day num from date
  1173.          CONCAT S0(8) ".TXT"     ; Add extension at column 8
  1174.  ->         LOG OPEN S0         ; Open log file "MAILmmdd.TXT"
  1175.  
  1176.          Note: "*" may be specified instead of an index (0,1,2...) after
  1177.          the target variable.  "*" performs the concatenation WITHOUT
  1178.          blank trimming.  Example:
  1179.  
  1180.          CONCAT S0 * S1         ; Concat S1 at LENGTH S0
  1181.  
  1182.  ->    CONNECT
  1183.  
  1184.          The CONNECT statement terminates a COM-AND script, returning to
  1185.          CRT mode.    It may be coded at any level (for example within a
  1186.          subroutine reached through a call from a subroutine).  Example:
  1187.  
  1188.  ->         CONNECT             ; End of script
  1189.          ; Nothing past this point in the script is executed
  1190.  
  1191.          Note also the EXIT and TERMINAL command.
  1192.  
  1193.     CRC <string> Nx
  1194.  
  1195.          The CRC statement computes a CRC for the string given.  This
  1196.          CRC might be transmitted after the string for error detection
  1197.          and recovery.  Example:
  1198.  
  1199.          CRC S0(0:19) N0         ; Compute CRC for 20 characters
  1200.          S0(20:24) = N0         ; Add CRC to the string
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209. Version 2.9: 921203
  1210.  
  1211. COM-AND: IBM PC Communications Script Language                 Page  19
  1212.  
  1213.  
  1214. V.    Script Language Commands (continued)
  1215.  
  1216.  
  1217.     CTOI <string> Nx
  1218.  
  1219.          The CTOI statement converts a string (1st byte) to a numeric
  1220.          variable.    Only a single character is extracted.  The value in
  1221.          the numeric variable is the character.  Example:
  1222.  
  1223.          S0 = "A"                ; Place something in a string
  1224.          CTOI S0 N0          ; N0 now contains a 65 (ASCII "A")
  1225.  
  1226.  ->    CUROFF
  1227.  
  1228.          The CUROFF statement turns off the blinking cursor.  The cursor
  1229.          is restored by the CURON command or upon script termination.
  1230.          Example:
  1231.  
  1232.  ->         CUROFF             ; Turn off the cursor
  1233.  
  1234.  ->    CURON
  1235.  
  1236.          The CURON statement restores on the blinking cursor.  This has
  1237.          no effect unless a CUROFF has been used, previously.  Example:
  1238.  
  1239.  ->         CURON             ; Turn back on the cursor
  1240.  
  1241.  ->    CURSOR Nx Ny
  1242.  
  1243.          The CURSOR statement reads the current cursor position.  Nx
  1244.          returns the row number, and Ny returns the column number.
  1245.          Example:
  1246.  
  1247.  ->         CURSOR N0,N1         ; Read current cursor row,col
  1248.  
  1249.  ->    CWHEN [(#)]
  1250.  
  1251.          The CWHEN statement clears a WHEN setting.  10 WHEN settings are
  1252.          available (WHEN (0), WHEN (1) ...    WHEN (9), with the unquali-
  1253.          fied WHEN equivalent to WHEN(0)).    Each must be set and cleared
  1254.          individually.  Examples:
  1255.  
  1256.  ->         CWHEN             ; Clear primary WHEN setting
  1257.          CWHEN (0)             ; Same as CWHEN
  1258.          CWHEN (9)             ; Clear last WHEN
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264. Version 2.9: 921203
  1265.  
  1266. COM-AND: IBM PC Communications Script Language                 Page  20
  1267.  
  1268.  
  1269. V.    Script Language Commands (continued)
  1270.  
  1271.  
  1272.  ->    DATE Sx [0!1]
  1273.  
  1274.          The DATE statement stores the current system date into the
  1275.          target variable.  Example:
  1276.  
  1277.  ->         DATE S0             ; Get today's date
  1278.  
  1279.          The date is formatted according to the optional argument (if
  1280.          provided and nonzero, the date is formatted mm/dd/yyyy;
  1281.          otherwise it is formatted mm/dd/yy).
  1282.  
  1283.     DBOX row col row col attr
  1284.  
  1285.          The DBOX statement draws a box using double line borders, over a
  1286.          region on the screen, filling the space within with a specified
  1287.          color.  The first and second arguments specify the row/column of
  1288.          the top-left of the region.  The third and fourth arguments
  1289.          specify the row/column of the bottom-right of the region.    The
  1290.          last argument specifies the color attribute to use for the box
  1291.          lines and center.    Example:
  1292.  
  1293.          DBOX 0 10,10 20,20 (black white)
  1294.  
  1295.          See also BOX.
  1296.  
  1297.     DEALLOCATE
  1298.  
  1299.          The DEALLOCATE statement deallocates dynamic variables if they
  1300.          are currently allocated.  Example:
  1301.  
  1302.          DEALLOCATE          ; DEALLOCATE dynamic variables
  1303.  
  1304.  ->    DEC Nx
  1305.  
  1306.          The DEC command performs the instruction:    Nx = Nx-1.  No error
  1307.          checking is performed; should the value exceed the range of a
  1308.          numeric variable, results are unpredictable.  Example:
  1309.  
  1310.  ->         DEC N1             ; N1 = N1-1
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319. Version 2.9: 921203
  1320.  
  1321. COM-AND: IBM PC Communications Script Language                 Page  21
  1322.  
  1323.  
  1324. V.    Script Language Commands (continued)
  1325.  
  1326.  
  1327.     DECRYPT <string> <string> <string>
  1328.  
  1329.          The DECRYPT command decrypts a file (named in the first argu-
  1330.          ment) to a new file (named in the second argument, which is
  1331.          purged if it exists) using a 32 character password (the third
  1332.          argument).  SUCCESS/FAILURE is set by DECRYPT.  Do not decrypt
  1333.          in place!    Example:
  1334.  
  1335.          DECRYPT "SECRET.ENF" "COM-AND.EXE" "abcdefghijklmnop"
  1336.  
  1337.  ->    DEFAULT
  1338.  
  1339.          The DEFAULT statement must be contained within the domain of a
  1340.          SWITCH/ENDSWITCH pair.  The DEFAULT statement specifies a domain
  1341.          of statements to execute if none of the preceding CASE state-
  1342.          ments have been executed.    The DEFAULT case is terminated when
  1343.          an ENDCASE is encountered.  Refer to SWITCH for an example.
  1344.  
  1345.          Multiple DEFAULT clauses within a SWITCH domain are not
  1346.          supported.  Only the first DEFAULT executes (if any execute).
  1347.          DEFAULT does not need be the last statement in the SWITCH
  1348.          domain...    but should be for this reason.
  1349.  
  1350.     DEFTIME <number>
  1351.  
  1352.          The DEFTIME statement sets the default delay for the RGET,
  1353.          WAITFOR, and PAUSE statements.  <number> is a timeout interval
  1354.          in seconds.  Example:
  1355.  
  1356.          DEFTIME 60          ; Set original default value back
  1357.  
  1358.     DELETE <file>
  1359.  
  1360.          The DELETE statement deletes a file named in the command.
  1361.          SUCCESS flag is set according to the result of the command.
  1362.          Example:
  1363.  
  1364.          DELETE "COM-AND.LOG"    ; Delete file on the default d:subd
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374. Version 2.9: 921203
  1375.  
  1376. COM-AND: IBM PC Communications Script Language                 Page  22
  1377.  
  1378.  
  1379. V.    Script Language Commands (continued)
  1380.  
  1381.  
  1382.  ->    DIAL <string>                    or DIAL <number>
  1383.  
  1384.          The DIAL statement invokes the dialing directory to dial the
  1385.          entry number specified in <string>.  <String> is formatted
  1386.          exactly as with the Alt-D menu; it consists of an entry number
  1387.          1-100 prefixed or suffixed by an optional long-distance entry
  1388.          flag.  Examples:
  1389.  
  1390.  ->         DIAL "1"                ; Dial entry 1
  1391.  ->         DIAL "@1"               ; Dial entry 1 with long-distance
  1392.  
  1393.          When a dialing directory entry indicates a script to perform,
  1394.          the indicated script is ignored when the number is dialed from
  1395.          within a script.  Use the LINKED condition of IF to test this
  1396.          for this condition.  [When a script is invoked from Alt-D,
  1397.          LINKED is true; otherwise it is false.]
  1398.  
  1399.          Dialing is performed as with the redial command (Alt-R).  The
  1400.          number is dialed every <RDELAY> seconds (below, see SET), until
  1401.          connection is established, or ESC is pressed.  [Note: a script
  1402.          may set a maximum number of redial attempts through SET RDMAX,
  1403.          below.  This feature is ONLY available through a script.]
  1404.  
  1405.          The DIAL command sets the FAILED condition if the statement is
  1406.          syntactically incorrect or if an ESC was entered to terminate
  1407.          redialing.  [Note: The script intrinsic "_RDPN" may be used to
  1408.          determine if the DIAL FAILED after redialing the maximum number
  1409.          of times (if set), or aborted by the user.]
  1410.  
  1411.  ->    DIR <string>
  1412.  
  1413.          The DIR statement accepts a string argument as a wildcard
  1414.          template and opens a file display window equivalent to the
  1415.          interactive Alt-F command of COM-AND.  Example:
  1416.  
  1417.  ->         DIR "*.*"               ; Show files on current subdir
  1418.  
  1419.     DIRECTORY Sx (<number>)
  1420.  
  1421.          The DIRECTORY command returns the name field from the dialing
  1422.          directory.  A directory number may be specified, or the last
  1423.          dialed entry may be requested.  Example:
  1424.  
  1425.          DIRECT S0 5             ; Fetch the name from # 5
  1426.          DIRECT S1                 ; Fetch name of last dialed
  1427.  
  1428.  
  1429. Version 2.9: 921203
  1430.  
  1431. COM-AND: IBM PC Communications Script Language                 Page  23
  1432.  
  1433.  
  1434. V.    Script Language Commands (continued)
  1435.  
  1436.  
  1437.  ->    DIV Nx Ny Nz
  1438.  
  1439.          The DIV command performs the instruction:    Nz = Nx/Ny.  No error
  1440.          checking is performed;  should the value exceed the range of a
  1441.          numeric variable, results are unpredictable.  Dividing by zero
  1442.          always yields zero.  Example:
  1443.  
  1444.  ->         DIV N1 N2 N3         ; N3 = N1/N2
  1445.  
  1446.          An expression may be used for Nx or Ny if it is entirely
  1447.          contained within parentheses.
  1448.  
  1449.     DLDIR Sx
  1450.  
  1451.          The DLDIR statement reads the current download drive:subdirec-
  1452.          tory into the string variable Sx.    Example:
  1453.  
  1454.          DLDIR S0               ; Read the current setting
  1455.  
  1456.     DLOAD <string>
  1457.  
  1458.          The DLOAD statement loads a new dialing directory file (Alt-D).
  1459.          The DLOAD command requires a file name in <string> (up to 27
  1460.          characters).  <String> contains an unqualified file.ext (or may
  1461.          contain a fully pathed file name).  Example:
  1462.  
  1463.          DLOAD "COM-AND.DIR"           ; Load original dialing dir
  1464.          DLOAD "C:\SOURCE\COM-AND.DIR" ; Load special directory
  1465.  
  1466.          See also LOAD DIAL.
  1467.  
  1468.     DNUMBER Sx (<number>)
  1469.  
  1470.          The DNUMBER command returns the number field from the dialing
  1471.          directory.  A directory number may be specified, or the last
  1472.          dialed entry may be requested.  Example:
  1473.  
  1474.          DNUM S0 5                 ; Fetch the nbr from # 5
  1475.          DNUM S1                 ; Fetch number last dialed
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484. Version 2.9: 921203
  1485.  
  1486. COM-AND: IBM PC Communications Script Language                 Page  24
  1487.  
  1488.  
  1489. V.    Script Language Commands (continued)
  1490.  
  1491.  
  1492.     DO
  1493.  
  1494.          The DO statement asserts the beginning of a loop.    The end of
  1495.          the loop is signalled by an UNTIL statement (which is evaluated
  1496.          to determine if looping occurs).  Example:
  1497.  
  1498.          DO              ; Loop until condition below
  1499.          ...
  1500.          UNTIL GE N0,10      ; Loop until N0 >= 10
  1501.  
  1502.          The condition evaluated by the UNTIL is any condition accepted
  1503.          by the IF statement (including conjunctions of conditions, dis-
  1504.          junction of conditions, and so on).
  1505.  
  1506.  
  1507.          Note: (1) GOTO statements may never enter a DO loop;  even
  1508.                to leave an inner loop to return to an outer loop.
  1509.  
  1510.          Note: (2) DO statements may be nested (along with IF, SWITCH,
  1511.                WHILE, and FOR loops) up to 20 levels.  However,
  1512.                they may not overlap other DO loops, or other
  1513.                flow-of-control statements.
  1514.  
  1515.          Note: (3) The clause of the DO statement (the statement after
  1516.                'DO' down to the UNTIL statement) is always executed
  1517.                at least once.  The conditional evaluation is not
  1518.                performed until the end of the clause.
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539. Version 2.9: 921203
  1540.  
  1541. COM-AND: IBM PC Communications Script Language                 Page  25
  1542.  
  1543.  
  1544. V.    Script Language Commands (continued)
  1545.  
  1546.  
  1547.  ->    DOS <string> [WAIT]
  1548.  
  1549.          The DOS command executes any DOS command.    It works by loading
  1550.          a copy of COMMAND.COM (or other SHELL program, as specified by
  1551.          the environment variable COMSPEC=) and passing <string> for
  1552.          execution.  Example:
  1553.  
  1554.  ->         DOS "dir a:"            ; List files on the 'A' drive
  1555.  
  1556.          The optional keyword WAIT commands COM-AND to pause after
  1557.          completion for a keypress before the script continues.
  1558.  
  1559.          NOTE: The screen is saved prior to the DOS function, for
  1560.          restoration upon completion.  However, the screen size saved
  1561.          is defined by the DWINDOW currently in effect!
  1562.  
  1563.          This command sets the SUCCESS condition (unless the SHELL cannot
  1564.          be found).
  1565.  
  1566.     DPARMS Sx (<number>)
  1567.  
  1568.          The DPARMS command returns the parameters field from the dialing
  1569.          directory, formatted:  rrrr,p,d,s,e (where r=rate, p = parity
  1570.          (EON), d = #data bits (7,8), s=#stop bits (1,2) and e=echo
  1571.          (Y,N," ").  A directory number may be specified, or the last
  1572.          dialed entry may be requested.  Example:
  1573.  
  1574.          DPARMS S0 5             ; Fetch the parms from # 5
  1575.          DPARMS S1                 ; Fetch parms last dialed
  1576.  
  1577.     DSCRIPT Sx (<number>)
  1578.  
  1579.          The DSCRIPT command returns the script file name from the
  1580.          dialing directory (or blanks).  A directory number may be
  1581.          specified, or the last dialed entry may be requested.  Example:
  1582.  
  1583.          DSCRIPT S0 5             ; Fetch the file from # 5
  1584.          DSCRIPT S1              ; Fetch script last dialed
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.  
  1593.  
  1594. Version 2.9: 921203
  1595.  
  1596. COM-AND: IBM PC Communications Script Language                 Page  26
  1597.  
  1598.  
  1599. V.    Script Language Commands (continued)
  1600.  
  1601.  
  1602.     DWINDOW row col row col
  1603.     DWINDOW CLEAR
  1604.  
  1605.          The DWINDOW command defines a new scrolling region.  The first
  1606.          row/col pair define the new top-left, and the second row/col
  1607.          pair define the bottom-right.  Example:
  1608.  
  1609.          DWINDOW 10,10,20,70         ; Define a small scroll box
  1610.  
  1611.          DWINDOW CLEAR resets the scrolling region to its maximum size
  1612.          (0,0,23,79 CGA, or 0,0,42(49),79 EGA(VGA)).
  1613.  
  1614.          'Home' cursor position is relative to the current definition of
  1615.          the scrolling region (e.g.  CLEAR statement).  The region is
  1616.          returned to 'normal' when a script terminates.  SET 43 and SET
  1617.          25, if executed after DWINDOW, reset the scrolling region and
  1618.          clear the DWINDOW.
  1619.  
  1620.          Note: COM-AND appropriates the last line of the current display
  1621.          for status/LEGEND display, unless you SET STATUS OFF.
  1622.  
  1623.          NOTE: The DWINDOW defines the screen size for the DOS, RUN and
  1624.          SHELL functions (for screen saves and restoration).  DWINDOW
  1625.          should generally be turned off prior to these commands, and
  1626.          reset afterwards.
  1627.  
  1628.     EBL Sx <EBL var>
  1629.  
  1630.          The EBL statement references the global data area maintained by
  1631.          EBL (see Appendix F) if EBL is currently installed.  If EBL is
  1632.          not installed, FAILURE is set.  If EBL is installed, the given
  1633.          variable (%A through %O, or &<name>) is returned in Sx, up to
  1634.          80 characters long (EBL allows up to 127 characters).  Example:
  1635.  
  1636.          EBL S0 %B             ; Fetch The second variable's value
  1637.          IF FAILURE ...         ; Action if EBL not installed
  1638.  
  1639.          Note:  The EBL command tests for the environment variable
  1640.          'BATINT=' before inquiring for EBL's presence.  EBL uses this
  1641.          environment variable to declare a new (hex) interrupt number.
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649. Version 2.9: 921203
  1650.  
  1651. COM-AND: IBM PC Communications Script Language                 Page  27
  1652.  
  1653.  
  1654. V.    Script Language Commands (continued)
  1655.  
  1656.  
  1657.     EBLSET &<name> Sx
  1658.  
  1659.          The EBLSET statement permits modification (and creation if space
  1660.          permits) of EBL external variables (see appendix F) if EBL is
  1661.          currently installed.  If EBL is not installed, or if space does
  1662.          not permit the modification, FAILURE is set.  If EBL is in-
  1663.          stalled, the given variable (named '&<name>) is set to the
  1664.          value in Sx, up to 80 characters long (EBL allows up to 127
  1665.          characters).  Example:
  1666.  
  1667.          EBLSET &USER S0         ; Set ext var to value in S0
  1668.          IF FAILURE ...         ; Action if EBL not installed
  1669.  
  1670.  ->    EDIT <file>
  1671.  
  1672.          The EDIT statement invokes COM-AND's internal editor.  A first
  1673.          file to open must be specified.  Editing is a manual operation
  1674.          (although an editor batch file may be STACK'd before the
  1675.          statement).  The script proceeds when the last file opened is
  1676.          closed.  Refer to the document CAEDIT.DOC for a discussion of
  1677.          the internal editor.
  1678.  
  1679.  ->    ELSE
  1680.  
  1681.          The ELSE statement must be contained within the domain of an
  1682.          IF/ENDIF pair.  Statements following an IF statement are
  1683.          executed if the condition specified evaluated true, and execu-
  1684.          tion continues until an ELSE or ENDIF are encountered.  If the
  1685.          condition tested with the IF evaluated false, statements
  1686.          following the ELSE statement (if present) are executed.  Refer
  1687.          to the IF statement for an example.
  1688.  
  1689.          Note: ELSE may carry the statement to execute on its own
  1690.          line, in which case no ENDIF is required.
  1691.  
  1692.  ->    EMULATE (TTY!ANSI!VIDTEX!VT100!VT52)
  1693.  
  1694.          The EMULATE command specifies terminal emulation.    COM-AND
  1695.          provides the following emulations (refer to COM-AND.DOC for
  1696.          details):    TTY (b/w), ANSI (color), VIDTEX (for CIS), VT-100
  1697.          and VT-52.  Example:
  1698.  
  1699.  ->         EMULATE TTY         ; Set screen to B&W
  1700.  
  1701.          Note: "EMULATE VIDTEX" is equivalent to "SET ENQ CISB".
  1702.  
  1703.  
  1704. Version 2.9: 921203
  1705.  
  1706. COM-AND: IBM PC Communications Script Language                 Page  28
  1707.  
  1708.  
  1709. V.    Script Language Commands (continued)
  1710.  
  1711.  
  1712.     ENCRYPT <string> <string> <string> [SIMPLE!AUTO]
  1713.  
  1714.          The ENCRYPT command encrypts a file (named in the first argu-
  1715.          ment) to a new file (named in the second argument, which is
  1716.          purged if it exists) using a 32 character password (the third
  1717.          argument).  An optional keyword specifies the method (DES is
  1718.          default).    SUCCESS/FAILURE is set by ENCRYPT.  Do not encrypt
  1719.          in place!    Example:
  1720.  
  1721.          ENCRYPT "COM-AND.EXE" "SECRET.ENF" "abcdefghijklmnop"
  1722.  
  1723.          Note: scripts are automatically decrypted when encountered by
  1724.          COM-AND.  You do not need to decrypt a script in order to
  1725.          EXECUTE it (but you may if you wish...).
  1726.  
  1727.  ->    ENDCASE
  1728.     ENDFOR
  1729.  ->    ENDIF
  1730.  ->    ENDSWITCH
  1731.     ENDWHILE
  1732.  
  1733.          The 'END' statements terminate the domain of 'CASE' (and
  1734.          'DEFAULT'), 'FOR', 'IF', 'SWITCH' and 'WHILE' statements,
  1735.          respectively.  [Note, "DO" is terminated by "UNTIL".] Each of
  1736.          these domain statements MUST be paired with its terminating
  1737.          statement.
  1738.  
  1739.     ENVIRON Sx <string>
  1740.  
  1741.          The ENVIRON statement returns the value associated with the
  1742.          variable <string> in the current environment block.  Envi-
  1743.          ronment variables are established with the DOS SET command,
  1744.          before COM-AND is entered (SET commands executed through the
  1745.          DOS SHELL have no effect on COM-AND).  Example:
  1746.  
  1747.          ENVIRON S5 "COMSPEC="   ; Get current shell pgm name
  1748.  
  1749.          ENVIRON sets and reset the FOUND flag according to operation.
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759. Version 2.9: 921203
  1760.  
  1761. COM-AND: IBM PC Communications Script Language                 Page  29
  1762.  
  1763.  
  1764. V.    Script Language Commands (continued)
  1765.  
  1766.  
  1767.  ->    EXECUTE <string>
  1768.  
  1769.          The EXECUTE command chains to a new script file.  The current
  1770.          script file is closed (and not re-entered when the new file
  1771.          completes).  Any IF/GOSUB/SWITCH/DO/WHILE commands in effect
  1772.          are cleared.  Example:
  1773.  
  1774.  ->         EXECUTE "newfile.cmd"   ; Pick up with a new script
  1775.          ; Nothing past this point in the script is performed.
  1776.  
  1777.          Note: string variables and conditions are retained as they are
  1778.          when the new script file begins execution.  In this way, para-
  1779.          meters may be passed to a new script.
  1780.  
  1781.  ->    EXIT
  1782.  
  1783.          The EXIT command terminates the script execution.    It may be
  1784.          coded at any level (for example within a subroutine reached
  1785.          through a call from a subroutine).  Example:
  1786.  
  1787.  ->         EXIT             ; Terminate the script processor
  1788.          ; Nothing past this point in the script is performed.
  1789.  
  1790.          NOTE: When the script processor reaches end-of-file, an implicit
  1791.          EXIT is performed.  This is true in EXECUTed as well as FCALLed
  1792.          scripts.
  1793.  
  1794.  ->    FATSAY row col attr <string> <parms>
  1795.  
  1796.          The FATSAY statement performs a MESSAGE function, i.e.
  1797.          writing to the screen, with cursor positioning and color
  1798.          control.  Parameters from the list provided are formatted
  1799.          into the displayed text, using a template string.    Example:
  1800.  
  1801.  ->         FATSAY 0 0 15 "The answer is %d %s" N0 S0 ; Value and label
  1802.          FATSAY 0 0 (black white) "The answer is %d %s" N0 S0
  1803.  
  1804.          Note: the cursor is left positioned after the last character
  1805.          written.  Refer to the STRFMT statement for discussion of
  1806.          parameter formatting.
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814. Version 2.9: 921203
  1815.  
  1816. COM-AND: IBM PC Communications Script Language                 Page  30
  1817.  
  1818.  
  1819. V.    Script Language Commands (continued)
  1820.  
  1821.  
  1822.     FATTR Sx <file>
  1823.     FATTR Nx <file>
  1824.  
  1825.          The FATTR command takes two forms, according to the destination
  1826.          variable.    In either form, the file name specification may be a
  1827.          literal quoted string, or a string variable.
  1828.  
  1829.          The "FATTR Nx" command places an 8 bit binary value to
  1830.          represent the file's attributes into the target variable.
  1831.  
  1832.          The "FATTR Sx" command formats the file attribute byte as
  1833.          binary digits into the target string (Sx).  The formatted
  1834.          string is 8 characters, each a 0 or 1.  Example:
  1835.  
  1836.          FATTR S3 "COM-AND.EXE"          ; Format into S3
  1837.  
  1838.          The FATTR command sets and resets the SUCCESS flag according to
  1839.          the presence of the named file.  The bits returned have meaning:
  1840.  
  1841.        (msb) xxxxxxxx (lsb)
  1842.             ^------------------------  Read-only file
  1843.            ^-------------------------  Hidden file
  1844.           ^--------------------------  System file
  1845.          ^---------------------------  File is a volume ID
  1846.         ^----------------------------  File is a subdirectory
  1847.            ^-----------------------------  Archive bit for the file
  1848.           ^------------------------------  Always 0
  1849.          ^-------------------------------  Always 0
  1850.  
  1851.          Please note that the string-form of the FATTR command may NOT
  1852.          be used with the SET FATTR statement.  SET FATTR requires a
  1853.          numeric argument, and the string-form is not directly mappable
  1854.          to its corresponding numeric bitwise representation.
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869. Version 2.9: 921203
  1870.  
  1871. COM-AND: IBM PC Communications Script Language                 Page  31
  1872.  
  1873.  
  1874. V.    Script Language Commands (continued)
  1875.  
  1876.  
  1877.     FCALL <file>
  1878.  
  1879.          The FCALL command invokes an external script as a 'subroutine'.
  1880.          If the new file is encrypted, a password is requested (if the
  1881.          calling file is encrypted, the password to the old file is not
  1882.          requested upon return).  Example:
  1883.  
  1884.          FCALL "SUBS.CMD"                ; Call a file
  1885.  
  1886.          The called file returns to the caller upon an FRETURN instruc-
  1887.          tion.  If end-of-file or EXIT is encountered in the called
  1888.          file, the script terminates.  [Note: "IF FCALLed" allows you
  1889.          to determine if the current file was entered via FCALL.]
  1890.  
  1891.          FCALL does not allow a branch out of the called file back into
  1892.          the caller's file.  Labels in an FCALLed file MAY duplicate
  1893.          labels in the caller's file.  Note: ON ESCAPE is not reset on
  1894.          entry via FCALL, and unless the new script has the identical
  1895.          label, the script fails (label not found) on escape.
  1896.  
  1897.          For performance purposes, FCALL does NOT close the calling file
  1898.          when the new script file is opened.  All script files are closed
  1899.          upon exit... however, a recursion amongst scripts may quickly
  1900.          consume all DOS file handles.  Avoid pairs of scripts where
  1901.          each script FCALLs the other.
  1902.  
  1903.          FCALLs may be nested to a depth of up to 10.
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924. Version 2.9: 921203
  1925.  
  1926. COM-AND: IBM PC Communications Script Language                 Page  32
  1927.  
  1928.  
  1929. V.    Script Language Commands (continued)
  1930.  
  1931.  
  1932.  ->    FCLOSEI
  1933.  ->    FCLOSEO
  1934.  
  1935.          The FCLOSEI and FCLOSEO commands close a file opened for input
  1936.          or output.  FCLOSE<I!O> on a file not opened does not hurt
  1937.          anything.    When a file is closed, all blocks pending are
  1938.          flushed to the file.  Example:
  1939.  
  1940.  ->         FCLOSEI             ; We're done with it
  1941.  
  1942.          Please note that, when opened for output in TEXT mode, COM-AND
  1943.          does not add a final ^Z (ASCII EOF convention).  The script
  1944.          author may choose to precede FCLOSEO with a 'WRITE ^Z"' as
  1945.          need dictates.
  1946.  
  1947.     FDATE Sx <file> [0!1]
  1948.  
  1949.          The FDATE command places the date last modified (as known by
  1950.          DOS) into the target string (Sx).    The file name specification
  1951.          may be a literal quoted string, or a string variable.  The date
  1952.          is formatted according to the optional format argument (if
  1953.          provided and nonzero, the date is formatted mm/dd/yyyy;
  1954.          otherwise it is formatted mm/dd/yy).  Example:
  1955.  
  1956.          FDATE S3 "COM-AND.EXE" 1        ; Format date into S3
  1957.  
  1958.          The FDATE command sets and resets the SUCCESS flag.
  1959.  
  1960.     FFIRST Sx
  1961.  
  1962.          The FFIRST command initializes a wildcard lookup.    If SUCCESS
  1963.          is set after FFIRST, file names may be obtained using the FNEXT
  1964.          command.  Only one thread of file name lookups is performed at
  1965.          anyone time;  invoking FFIRST when there are more file names to
  1966.          be returned terminates the previous thread.  Example:
  1967.  
  1968.          FFIRST "*.asm"                  ; Initialize lookup
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979. Version 2.9: 921203
  1980.  
  1981. COM-AND: IBM PC Communications Script Language                 Page  33
  1982.  
  1983.  
  1984. V.    Script Language Commands (continued)
  1985.  
  1986.  
  1987.  ->    FGETC Sx
  1988.  ->    FGETS Sx
  1989.  
  1990.          The FGETC and FGETS commands read a character (FGETC) or a
  1991.          string (FGETS) from a file into a string variable.  The input
  1992.          file must be opened by a previous FOPENI, of course.
  1993.  
  1994.          In TEXT mode, the FGET commands translate CR/LF pairs in the
  1995.          input file to single LFs.    No tab expansion is performed.
  1996.          In TEXT mode, the FGET commands stop on an ASCII EOF (Ctl-Z).
  1997.  
  1998.          FGETC reads a single character into Sx(0:0).  FGETS reads up
  1999.          to 80 characters into Sx.    If the input file was opened in TEXT
  2000.          mode, the read string terminates at the 80th byte or a CR/LF
  2001.          pair (placed in Sx as a single LF).  Example:
  2002.  
  2003.  ->         FGETS S0             ; Read up to 80 bytes
  2004.  
  2005.          The FGET commands set the EOF condition on input EOF.  This
  2006.          may be tested with the IF statement.
  2007.  
  2008.          Note also: FREAD and READ commands.
  2009.  
  2010.  ->    FIND Sx <string> [Nx]
  2011.  
  2012.          The FIND command tests for a substring within a target string.
  2013.          Case is not significant.  This command sets the FOUND condition
  2014.          for the IF command.  Example:
  2015.  
  2016.  ->         FIND S0 "sentence"      ; Test for the word 'sentence'
  2017.  
  2018.          Note the optional numeric variable argument.  If supplied, the
  2019.          index (0,1,2,3...) to the substring within the target string is
  2020.          placed in the indicated numeric variable.
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034. Version 2.9: 921203
  2035.  
  2036. COM-AND: IBM PC Communications Script Language                 Page  34
  2037.  
  2038.  
  2039. V.    Script Language Commands (continued)
  2040.  
  2041.  
  2042.     FNEXT  Sx [QUAL]
  2043.  
  2044.          The FNEXT command returns file names from a wildcard lookup.
  2045.          If SUCCESS is set after FNEXT, the given string variable con-
  2046.          tains the next file name from the template match begun with
  2047.          FFIRST.  IF FAILURE is set, the string variable is also set
  2048.          to nulls.    Example:
  2049.  
  2050.          FNEXT S0                 ; Return name.ext
  2051.          FNEXT S0 QUAL             ; Return fully qualified name
  2052.  
  2053.          Wildcard lookup must be initialized with the FFIRST command.
  2054.          The optional 'QUAL' modifier controls whether the returned name
  2055.          is "name.ext" or fully qualified with drive:subdirectory.
  2056.  
  2057.  ->    FOPENI <file> [TEXT!BINARY]
  2058.  ->    FOPENO <file> [TEXT!BINARY!APPEND]
  2059.  
  2060.          The FOPENI and FOPENO commands open a file for input or output.
  2061.          COM-AND currently supports one file opened for input and one for
  2062.          output at any one time.  I/O to/from the file is blocked for
  2063.          fastest access.
  2064.  
  2065.          Files opened for input may be declared TEXT or BINARY in the
  2066.          open statement.  The default is TEXT.  When the file is opened,
  2067.          it is positioned to the start of the file.
  2068.  
  2069.          Files opened for output may be declared TEXT or BINARY in the
  2070.          open statement.  The default is TEXT.  On output, unless APPEND
  2071.          is specified, the file is purged if it existed previously.  On
  2072.          output, if APPEND is specified, the file is created if it does
  2073.          not exist, and positioned to end-of-file.
  2074.  
  2075.  ->         FOPENI "COM-AND.UFL" TEXT       ; Open file in text mode
  2076.          FOPENO "COM-AND.LOG" TEXT APPEND; Open file, add to old data
  2077.  
  2078.          The FOPEN commands set the SUCCESS flag according to completion.
  2079.  
  2080.          Refer to FCLOSE, FGET, FPUT, FREAD, FWRITE, READ and WRITE for
  2081.          details of input/output file handling.  Also refer to REWIND,
  2082.          FSAVE and FRESTORE for positioning controls.
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089. Version 2.9: 921203
  2090.  
  2091. COM-AND: IBM PC Communications Script Language                 Page  35
  2092.  
  2093.  
  2094. V.    Script Language Commands (continued)
  2095.  
  2096.  
  2097.     FOR Nx = <init> <final> [<step>]
  2098.  
  2099.          The FOR statement asserts the beginning of a loop, controlled
  2100.          by the value of a specific numeric index.    The initial value,
  2101.          the final value, and an optional step value are specified.
  2102.          [If a step value is not specified, a step of 1 is used.]
  2103.  
  2104.          The FOR statement initializes the index variable to the given
  2105.          value and performs commands until an ENDFOR is encountered.
  2106.          Upon ENDFOR, the index is incremented (or decremented) by the
  2107.          step value and the result tested against the given final value.
  2108.  
  2109.          If the step is positive, the loop terminates when the index is
  2110.          greater than the final value.  If the step is negative, the
  2111.          loop terminates when the index is less than the final value.
  2112.  
  2113.          Example:
  2114.  
  2115.          FOR N0 = 1,10         ; Loop for 10 times
  2116.          ...
  2117.          ENDFOR
  2118.  
  2119.  
  2120.          Note: (1) The STEP and FINAL values are evaluated when the
  2121.                FOR statement is encountered.  Changing intermediate
  2122.                values has no effect on the loop.
  2123.  
  2124.          Note: (2) The loop index specified should not be modified
  2125.                within the loop.  The results are unspecified if so.
  2126.  
  2127.          Note: (3) GOTO statements may never enter a FOR loop;  even
  2128.                to leave an inner loop to return to an outer loop.
  2129.  
  2130.          Note: (4) FOR statements may be nested (along with IF, SWITCH,
  2131.                WHILE and DO loops) up to 20 levels.  However, they
  2132.                may not overlap other FOR loops, or other flow-of-
  2133.                control statements.
  2134.  
  2135.          Note: (5) The FOR loop executes once, unconditionally, before
  2136.                the bounds test is performed.
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144. Version 2.9: 921203
  2145.  
  2146. COM-AND: IBM PC Communications Script Language                 Page  36
  2147.  
  2148.  
  2149. V.    Script Language Commands (continued)
  2150.  
  2151.  
  2152.  ->    FPUTC Sx
  2153.  ->    FPUTS Sx
  2154.  
  2155.          The FPUTC and FPUTS commands write a character (FPUTC) or a
  2156.          string (FPUTS) from a string variable to the output file.
  2157.          The output file must be opened by a previous FOPENO.
  2158.  
  2159.          In TEXT mode the FPUT commands translate LFs in the string
  2160.          buffer to CR/LF pairs.  No tab compression is performed.
  2161.  
  2162.          FPUTC writes a single character from Sx.
  2163.  
  2164.          FPUTS writes up to 80 characters from Sx, according to the
  2165.          length of the value in Sx.  Example:
  2166.  
  2167.  ->         FPUTS S0             ; Write up to 80 bytes
  2168.  
  2169.          Note also: FWRITE and WRITE commands.
  2170.  
  2171.  ->    FREAD Sx Nx Ny
  2172.  
  2173.          The FREAD command reads a string (up to Nx characters) from
  2174.          a file into a string variable.  The input file must be opened
  2175.          by a previous FOPENI, of course.
  2176.  
  2177.          In TEXT mode, the FREAD command translates CR/LF pairs in the
  2178.          input file to single LFs, and the read operation ends.  No tab
  2179.          expansion is performed.  If the input file was opened in TEXT
  2180.          mode, the FREAD commands stop on an ASCII EOF character (Ctl-Z).
  2181.  
  2182.          FREAD reads up to 80 characters into Sx.  If the input file was
  2183.          opened in TEXT mode, the read string terminates at the 80th byte
  2184.          or at a CR/LF pair (placed in Sx as a single LF).    The count
  2185.          read is placed in Ny.
  2186.  
  2187.          Example:
  2188.  
  2189.  ->         FREAD S0 80 N4         ; Read 80 bytes; count read in N4
  2190.  
  2191.          The FREAD command sets the EOF condition on input EOF.  This
  2192.          may be tested with the IF statement.
  2193.  
  2194.          Note also: FGETC/FGETS/READ, and especially notes to READ.
  2195.  
  2196.  
  2197.  
  2198.  
  2199. Version 2.9: 921203
  2200.  
  2201. COM-AND: IBM PC Communications Script Language                 Page  37
  2202.  
  2203.  
  2204. V.    Script Language Commands (continued)
  2205.  
  2206.  
  2207.     FREE Sx <string>
  2208.  
  2209.          The FREE statement returns the free space (as a numeric string)
  2210.          on a given disc.  The second operand specifies the drive (""
  2211.          may be used for the default drive) as "d:", where d = a,b,c...
  2212.          Example:
  2213.  
  2214.          FREE S0 "C:"                   ; Get free space on C:
  2215.  
  2216.          Please note that the returned string is (usually) too large to
  2217.          be represented in a 16-bit numeric variable.
  2218.  
  2219.     FRESTOREI
  2220.     FRESTOREO
  2221.  
  2222.          The FRESTORE statement restores the last saved position in
  2223.          either the input or output file.  The FRESTORE statement sets
  2224.          the SUCCESS flag according to save-stack underflow.  See FSAVE
  2225.          below for more detail.  Example:
  2226.  
  2227.          FRESTOREI                ; Restore last saved position
  2228.  
  2229.     FRETURN
  2230.  
  2231.          The FRETURN command returns returns from an FCALL instruction.
  2232.          The current file is closed, and the previous file (the one
  2233.          containing the FCALL) continues.  On return from FCALL, if the
  2234.          invoking file is encrypted, the previous password is NOT
  2235.          requested a second time.  Example:
  2236.  
  2237.          FRETURN                 ; Return to calling file
  2238.  
  2239.          The FCALL stack is limited to a depth of 10 FCALLs.
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.  
  2254. Version 2.9: 921203
  2255.  
  2256. COM-AND: IBM PC Communications Script Language                 Page  38
  2257.  
  2258.  
  2259. V.    Script Language Commands (continued)
  2260.  
  2261.  
  2262.     FSAVEI [CLEAR!SHIFT!POP]
  2263.     FSAVEO [CLEAR!SHIFT!POP]
  2264.  
  2265.          The FSAVE statement saves the current file position (input or
  2266.          output) on a stack for later repositioning (FRESTORE).  Up to
  2267.          20 positions may be saved for each file.  The SUCCESS flag is
  2268.          set/reset according to save-stack overflow.  Example:
  2269.  
  2270.          FSAVEI                 ; To come back later
  2271.  
  2272.          Three subcommands are useful to manage the stack:
  2273.  
  2274.          FSAVE[I!O] CLEAR             ; Zeroes the save-stack
  2275.          FSAVE[I!O] SHIFT             ; Shifts the stack down one
  2276.          FSAVE[I!O] POP             ; Throws away last saved pos
  2277.  
  2278.          The appropriate file must be open before FSAVE is used.  The
  2279.          FCLOSEx (and FOPENx) instruction clears its save-stack.
  2280.  
  2281.     FSIZE Sx <file>
  2282.  
  2283.          The FSIZE command sets the file size (up to seven digits) into
  2284.          the target string (Sx).  The file name specification may be a
  2285.          literal quoted string, or a string variable.  The SIZE is
  2286.          formatted with leading zeroes blanked and the string right
  2287.          justified in a space of 7 characters.  Example:
  2288.  
  2289.          FSIZE S3 "COM-AND.EXE"          ; Format into S3
  2290.  
  2291.          The FSIZE command sets and resets the SUCCESS flag according
  2292.          to the presence of the named file.  Please note that the
  2293.          returned string is (usually) too large to use as a numeric.
  2294.  
  2295.     FTIME Sx <file> [0!1]
  2296.  
  2297.          The FTIME command sets the time last modified (as known by DOS)
  2298.          into the target string (Sx).  The file name specification may
  2299.          be a literal quoted string, or a string variable.    The time is
  2300.          formatted according to the optional format argument (if provided
  2301.          and nonzero, the time is formatted hh:mm:ss where hh is 0-23;
  2302.          otherwise it is formatted hh:mm:ss with a final AM or PM).
  2303.  
  2304.          FTIME S3 "COM-AND.EXE" 1        ; Format military time into S3
  2305.  
  2306.          The FTIME command sets and resets the SUCCESS flag.
  2307.  
  2308.  
  2309. Version 2.9: 921203
  2310.  
  2311. COM-AND: IBM PC Communications Script Language                 Page  39
  2312.  
  2313.  
  2314. V.    Script Language Commands (continued)
  2315.  
  2316.  
  2317.  ->    FWRITE Sx Nx
  2318.  
  2319.          The FWRITE command writes a string from a string variable to
  2320.          the output file.  The length of the string variable is specified
  2321.          by Nx.  The output file must be opened by a previous FOPENO.
  2322.  
  2323.          In TEXT mode the FWRITE command translates LFs in the string
  2324.          buffer to CR/LF pairs.  No tab compression is performed.
  2325.  
  2326.          FWRITE writes up to 80 characters from Sx, according to the
  2327.          value in Nx.
  2328.  
  2329.          Example:
  2330.  
  2331.  ->         FPUTS S0 75         ; Write 75 bytes
  2332.  
  2333.          Note also: FPUTC/FPUTS/WRITE and especially the WRITE command.
  2334.  
  2335.  ->    GET Sx [<number>]
  2336.  
  2337.          The GET command reads the keyboard for text.  Text entry is
  2338.          terminated by a carriage return, or, if the optional numeric
  2339.          argument was supplied, after <number> characters.    Keyentry is
  2340.          echoed back to the screen.  Escape entered in response to the
  2341.          GET command terminates the script.  Example:
  2342.  
  2343.  ->         MESSAGE "^MEnter a password:"
  2344.  ->         GET S0 8             ; Get up to 8 characters
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364. Version 2.9: 921203
  2365.  
  2366. COM-AND: IBM PC Communications Script Language                 Page  40
  2367.  
  2368.  
  2369. V.    Script Language Commands (continued)
  2370.  
  2371.  
  2372.  ->    GETFILE ASCII    <string>     ; A.K.A. Buffer capture
  2373.     GETFILE BPLUS             ; CompuServe B+ protocol
  2374.  ->    GETFILE BYMODEM          ; Batch YMODEM
  2375.  ->    GETFILE BYMODEMG         ; Batch YMODEM-G (BYMOG works too)
  2376.  ->    GETFILE CISB             ; CompuServe B-protocol
  2377.  ->    GETFILE KERMIT             ; Kermit or SuperKermit
  2378.     GETFILE QUICKB             ; CompuServe Quick B-protocol
  2379.  ->    GETFILE RXMODEM <string>     ; Relaxed CRC or Checksum XMODEM
  2380.  ->    GETFILE WXMODEM <string>     ; Windowed XMODEM
  2381.  ->    GETFILE XMODEM    <string>     ; CRC or Checksum XMODEM
  2382.  ->    GETFILE YMODEM    <string>     ; Simple YMODEM (not True ... (TM))
  2383.     GETFILE ZMODEM             ; ZMODEM transfer (batch)
  2384.  
  2385.          The GETFILE statement initiates a download using one of the
  2386.          specified protocols.  The <string> argument must specify a
  2387.          valid file name.  The GETFILE command sets SUCCESS/FAILURE
  2388.          condition according to result of the transfer.  Example:
  2389.  
  2390.  ->         GETFILE XMODEM "com-and.arc"  ; Download
  2391.  
  2392.          Note:  in the cases of CISB (B+/QuickB), KERMIT,ZMODEM, and
  2393.          Batch YMODEM (G), the host tells COM-AND the name the new file
  2394.          takes on your machine.  If the name duplicates an existing
  2395.          name, characters of the extent are replaced by '$' (right to
  2396.          left).  [If BPlus/ZMODEM recovery is enabled, the transfer
  2397.          picks up where a failed transfer stopped, using the old name].
  2398.  
  2399.          (1) With ASCII transfers, you must manually terminate the
  2400.          capture with ESC.
  2401.  
  2402.          (2) XMODEM and YMODEM (XMODEM1K) automatically purge the target
  2403.          file if it exists.  No manual intervention is required.
  2404.  
  2405.          (3) ZMODEM and CIS-B (B+/QuickB) provide an automated download
  2406.          function.  The automated function is NOT available within a
  2407.          script unless the script is 'reading the port', i.e. with an
  2408.          RGET, PAUSE or SUSPEND statement.
  2409.  
  2410.          (4) ZMODEM recovery (of a failed transfer) may be enabled and
  2411.          disabled with the SET ZMODEM RECOVER statement.
  2412.  
  2413.          (5) BPlus recovery (of a failed transfer) may be enabled and
  2414.          disabled with the SET BPLUS RECOVER statement.
  2415.  
  2416.  
  2417.  
  2418.  
  2419. Version 2.9: 921203
  2420.  
  2421. COM-AND: IBM PC Communications Script Language                 Page  41
  2422.  
  2423.  
  2424. V.    Script Language Commands (continued)
  2425.  
  2426.  
  2427.  ->    GOSUB <label>
  2428.  
  2429.          The GOSUB statement transfers control to the label specified in
  2430.          <label>.  When a RETURN statement is encountered, execution
  2431.          resumes at the next statement (after the GOSUB).  GOSUB commands
  2432.          may be nested to a maximum stack depth of 20.  Example:
  2433.  
  2434.          IF FOUND             ; Test result of a FIND
  2435.  ->        GOSUB "SUB"          ; If we found it, transfer to sub
  2436.  ->        ENDIF             ; .. and return here
  2437.          ...
  2438.  ->         EXIT             ; End of main-line script
  2439.          ...
  2440.  ->         SUB:
  2441.  ->         MESSAGE "..."           ; Issue a message
  2442.  ->         RETURN             ; And return to after the GOSUB
  2443.  
  2444.          All of the following are legitimate GOSUB's:
  2445.  
  2446.  ->         GOSUB LABEL         ; Direct LABEL name
  2447.  ->         GOSUB "LABEL"           ; Quoted LABEL name
  2448.  
  2449.          ASSIGN S0 "LABEL"       ; Assign label name to a string
  2450.          GOSUB S0             ; And goto the label in S0
  2451.  
  2452.          Note:  You cannot GOSUB to a label in a file that has FCALLed
  2453.          the current file.    This includes ON ESCAPE GOSUB and ON SILENCE
  2454.          GOSUB conditions (see below).  The FCALLed file may however
  2455.          have a label duplicating one in the caller's file.  In this
  2456.          case, the GOSUB transfers to the label in the FCALLed file.
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474. Version 2.9: 921203
  2475.  
  2476. COM-AND: IBM PC Communications Script Language                 Page  42
  2477.  
  2478.  
  2479. V.    Script Language Commands (continued)
  2480.  
  2481.  
  2482.  ->    GOTO <label>
  2483.  
  2484.          The GOTO statement unconditionally transfers control to the
  2485.          label specified in <label>.  If <label> occurs more than once
  2486.          in the script file, control is transferred to the one nearest
  2487.          the beginning of the script.  Example:
  2488.  
  2489.  ->         IF FAILURE          ; Test previous command execution
  2490.  ->        GOTO "ERROR"         ; Branch if it didn't work
  2491.  ->        ENDIF             ; End error test
  2492.          ...
  2493.  ->         ERROR:
  2494.  ->         EXIT             ; Terminate the script
  2495.  
  2496.          Note:  GOTO's may be used to transfer control out of an IF,
  2497.          CASE, DO, or WHILE clause.  However:  GOTO's should never be
  2498.          used to transfer control INTO one or the other clauses of an IF,
  2499.          CASE, DO or WHILE structure.  This warning includes transfer out
  2500.          of an IF clause into an enveloping IF clause.  "Unexpected
  2501.          ENDIF" or "Unexpected ENDCASE" error messages result from such
  2502.          practice.    For example:
  2503.  
  2504.          IF condition         ; Example of a nested IF
  2505.         ...
  2506.         IF condition
  2507.            GOTO SKIP_It      ; This is INVALID!!!  It branches
  2508.            ENDIF         ; .. into an IF clause out of one
  2509.         ...
  2510.          SKIP_It:             ; This label is within the outer IF
  2511.         ...             ;          !!! INVALID !!!
  2512.         ENDIF             ; End of outer IF
  2513.  
  2514.          Like the GOSUB statement, the operand of a GOTO statement may
  2515.          be a literal label, a quoted label, or a string variable
  2516.          containing the label as text.
  2517.  
  2518.          Note:  GOTO's may not be used to transfer control out of a
  2519.          subroutine.  "Stack overflows" are eventually reported if
  2520.          you do this!
  2521.  
  2522.          Note:  GOTO's do not exit an FCALLed file to reach a label in
  2523.          a previous file (the caller or caller of caller).    The domain of
  2524.          labels used by GOTO is the current script file, and does not
  2525.          include calling files.
  2526.  
  2527.  
  2528.  
  2529. Version 2.9: 921203
  2530.  
  2531. COM-AND: IBM PC Communications Script Language                 Page  43
  2532.  
  2533.  
  2534. V.    Script Language Commands (continued)
  2535.  
  2536.  
  2537.  ->    HANGUP
  2538.  
  2539.          The HANGUP command terminates the modem connection (if connec-
  2540.          tion has been established).  It changes CONNECTED condition
  2541.          (tested with the IF statement, if true CD is enabled on the
  2542.          modem).  Example:
  2543.  
  2544.  ->         HANGUP             ; Disconnect:  we're done
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.  
  2584. Version 2.9: 921203
  2585.  
  2586. COM-AND: IBM PC Communications Script Language                 Page  44
  2587.  
  2588.  
  2589. V.    Script Language Commands (continued)
  2590.  
  2591.  
  2592.  ->    IF [NOT] <condition> [<statement>]
  2593.  
  2594.          The IF statement tests a stated condition, and transfers control
  2595.          according to the result of the test.  The IF statement may carry
  2596.          the statement to perform conditionally, or it may precede
  2597.          statements to execute if the evaluation is true.
  2598.  
  2599.          In the latter case, and ONLY in that case (where the statements
  2600.          conditionally executed follow the IF statement), the script may
  2601.          include an optional ELSE clause, to execute if the condition
  2602.          evaluated is found false.    The domain of this form of IF
  2603.          control is terminated with an ENDIF statement.
  2604.  
  2605.          This construction of the IF statements may be nested up to a
  2606.          maximum stack depth of 20 (with SWITCH DO, FOR, WHILE, and
  2607.          GOSUBs).  Example:
  2608.  
  2609.  ->         IF <condition>         ; Test condition
  2610.  ->        GOSUB "TRUE"         ; .. execute this if true
  2611.  ->         ELSE             ; Optional ELSE clause
  2612.  ->        GOSUB "FALSE"        ; .. execute this if condition false
  2613.  ->         ENDIF             ; End of IF
  2614.  
  2615.          An equally legitimate construction could be:
  2616.  
  2617.          IF <condition> GOSUB "TRUE"
  2618.          IF NOT <condition> GOSUB "FALSE"
  2619.  
  2620.          Or even:
  2621.  
  2622.  ->         IF <condition>         ; Test condition
  2623.  ->        GOSUB "TRUE"         ; .. execute this if true
  2624.          ELSE GOSUB "False"      ; ENDIF-less form
  2625.  
  2626.          Please note however, the following invalid construction:
  2627.  
  2628.          IF GOSUB "TRUE"         ; This statement allows NO ELSE or ENDIF
  2629.          ELSE GOSUB "False"      ; Therefore, this statement fails
  2630.  
  2631.          IF conditions may be joined with AND, OR, and XOR within one
  2632.          IF statement.  Parenthesization is also supported.  This usage
  2633.          is discussed below, after <condition> is defined.
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639. Version 2.9: 921203
  2640.  
  2641. COM-AND: IBM PC Communications Script Language                 Page  45
  2642.  
  2643.  
  2644. V.    Script Language Commands (continued)
  2645.  
  2646.  
  2647.  ->    IF <condition> (continued)
  2648.  
  2649.          The optional keyword NOT may precede the condition being tested
  2650.          to reverse its meaning.  IF conditions are:
  2651.  
  2652.          ALLOCATED         The ALLOCATED condition is true if dynamic
  2653.                  variables are currently allocated.
  2654.  
  2655.          ALPHA Sx         The ALPHA condition tests the first character
  2656.                  of the given string.  It is true if it finds
  2657.                  A-Z or a-z.
  2658.  
  2659.  ->         CONNECTED         The CONNECTED condition is set and reset
  2660.                  according to the CD (carrier detect) of the
  2661.                  modem.  If your modem does not report true
  2662.                  CD, then this condition is not reliable.
  2663.  
  2664.          CONTROL Sx      The CONTROL condition tests the first character
  2665.                  of the given string.  It is true when the first
  2666.                  character has a value less than 32 (' ').
  2667.  
  2668.          ERROR         The ERROR condition is set and reset by the
  2669.                  script processor after each command.  If the
  2670.                  command is syntactically or semantically
  2671.                  invalid, this condition is set.
  2672.  
  2673.  ->         EOF         The EOF condition is set and reset by the
  2674.                  last FGETS/FGETC/FREAD/READ statements.
  2675.  
  2676.  ->         HITKEY         The HITKEY condition is true if a keypress
  2677.                  is pending (it has not been read).  Note: Use
  2678.                  of this function suspends normal type-through
  2679.                  until a GET/MGET/ATGET/MATGET/KEYGET/KFLUSH
  2680.                  is performed, regardless of value returned.
  2681.  
  2682.                  Use of HITKEY may inhibit ESC termination!
  2683.  
  2684.  ->         FAILED         The FAILED condition is simply "NOT SUCCESS".
  2685.  
  2686.          FCALLED         The FCALLED condition tests if the current
  2687.                  script file was entered via an FCALL state-
  2688.                  ment (if is false unless an FRET is needed).
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694. Version 2.9: 921203
  2695.  
  2696. COM-AND: IBM PC Communications Script Language                 Page  46
  2697.  
  2698.  
  2699. V.    Script Language Commands (continued)
  2700.  
  2701.  
  2702.  ->    IF <condition> (continued)
  2703.  
  2704.          FIND Sx Sy [Nx] The FIND condition is actually a FIND per-
  2705.                  formed within the IF statement.  The syntax
  2706.                  and function are identical to the instruction.
  2707.  
  2708.          FKEY         The FKEY condition works in a fashion similar
  2709.                  to HITKEY.  FKEY waits for a function keypress
  2710.                  (not an ASCII key).  ASCII keystrokes are
  2711.                  typed-through (if TTHRU is on).
  2712.  
  2713.          FLAG [(#)]      The FLAG condition tests the current state
  2714.                  of flag number # (0-9).  Flags are set and
  2715.                  with the script instruction SET FLAG.
  2716.  
  2717.  ->         FOUND         The FOUND condition is set and reset by
  2718.                  the last FIND statement.
  2719.  
  2720.          FULL         The FULL condition works in a fashion similar to
  2721.                  XOFF.  FULL is true when COM-AND has XOFFed the
  2722.                  other side (flow control must therefore be
  2723.                  ON for this test to have meaning).
  2724.  
  2725.          ISDLFILE Sx     The ISDLFILE condition is actually a ISDLFILE
  2726.                  performed within the IF statement.  The syntax
  2727.                  and function are identical to the instruction.
  2728.  
  2729.          ISFILE Sx         The ISFILE condition is actually a ISFILE
  2730.                  performed within the IF statement.  The syntax
  2731.                  and function are identical to the instruction.
  2732.  
  2733.          ISSCFILE Sx     The ISSCFILE condition is actually a ISSCFILE
  2734.                  performed within the IF statement.  The syntax
  2735.                  and function are identical to the instruction.
  2736.  
  2737.  ->         LINKED         The LINKED condition is true when the script
  2738.                  being executed was invoked from a dialing
  2739.                  directory entry.
  2740.  
  2741.  ->         MONO         The MONO condition is true if the CRT is
  2742.                  a monochrome monitor (mode 7).
  2743.  
  2744.          NULL Sx         The NULL condition tests the given string
  2745.                  and is true if the string is blank or null.
  2746.  
  2747.  
  2748.  
  2749. Version 2.9: 921203
  2750.  
  2751. COM-AND: IBM PC Communications Script Language                 Page  47
  2752.  
  2753.  
  2754. V.    Script Language Commands (continued)
  2755.  
  2756.  
  2757.  ->    IF <condition> (continued)
  2758.  
  2759.          NUMERIC Sx      The NUMERIC condition tests the first charac-
  2760.                  ter of the given string.  It is true if it
  2761.                  finds one of the characters 0-9.
  2762.  
  2763.          PRINTER         The PRINTER condition tests for the printer
  2764.                  enabled through COM-AND (PRINTER ON!OFF).
  2765.  
  2766.          OVERLAY         The OVERLAY condition tests for the presence of
  2767.                  a machine language overlay file.
  2768.  
  2769.          RECEIVE         The RECEIVE condition tests for characters
  2770.                  pending on the comm port.    It is true if one
  2771.                  or more characters are ready to read.
  2772.  
  2773.          SPECIAL Sx      The SPECIAL condition tests the first charac-
  2774.                  ter of the given string.  It is true if the
  2775.                  character is not alpha, numeric or control.
  2776.  
  2777.          STRCMP Sx Sy    The STRCMP condition is actually a STRCMP
  2778.                  performed within the IF statement.  The syntax
  2779.                  and function are identical to the instruction.
  2780.  
  2781.  ->         SUCCESS         The SUCCESS condition is set and reset
  2782.                  according to the result of the last GETFILE,
  2783.                  SENDFILE, ISFILE, RGET, DOS, RUN, LOG OPEN,
  2784.                  FFIRST, FNEXT, FDATE, FTIME, FSIZE, FATTR,
  2785.                  RENAME, REWIND, DELETE and DIAL statements.
  2786.  
  2787.          TRACE         The TRACE condition tests the TRACE ON!OFF
  2788.                  status.
  2789.  
  2790.  ->         WAITFOR         The WAITFOR condition is set and reset
  2791.                  by the last WAITFOR statement.
  2792.  
  2793.          XOFF         The XOFF condition tests to determine if an XOFF
  2794.                  received from the host is currently pending.
  2795.                  SOFT flow control must be ON for this test.
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804. Version 2.9: 921203
  2805.  
  2806. COM-AND: IBM PC Communications Script Language                 Page  48
  2807.  
  2808.  
  2809. V.    Script Language Commands (continued)
  2810.  
  2811.  
  2812.  ->    IF <condition> (continued)
  2813.  
  2814.  ->         ZERO Nx         The ZERO condition must be qualified by a
  2815.                  numeric value/variable.  The condition is
  2816.                  true if the evaluation is 0.
  2817.  
  2818.                  Note: Expressions may be used in place of Nx,
  2819.                  if the expression is parenthesized.  For
  2820.                  example: "IF ZERO (N0-10)" is allowed.
  2821.  
  2822.  ->         <cc> Nx Ny      Numeric conditionals are expressed as <cc>
  2823.                  (where <cc> may be EQ, LT, GT, LE, GE, NE)
  2824.                  followed by two numeric values/variables.
  2825.                  IF LT N1 N2 is interpreted: IF N1 LT N2.
  2826.  
  2827.                  Note: "NE" is not ASPECT/PROCOMM compatible.
  2828.  
  2829.                  Note: An expressions may be used in place of Nx
  2830.                  or Ny, if the expression is parenthesized.
  2831.                  For example: "IF GT (N0-5) 25" is allowed.
  2832.  
  2833.          Nx <cc> Ny      COM-AND allows the normal comparison form, as
  2834.                  well.  However, as conditional evaluation
  2835.                  allows parentheses, the first numeric expres-
  2836.                  sion DOES NOT allow parentheses.  Opening
  2837.                  parens of a conditional expression are taken to
  2838.                  apply to the conditional, not the numeric.  For
  2839.                  example:
  2840.                       IF (N10-2) eq 5    ; Always fails
  2841.                       IF N10-2 eq 5    ; Is fine
  2842.                       IF (N10-2 eq 5)    ; Is fine, too
  2843.  
  2844.  
  2845.          [Discussion continues on the next page.]
  2846.  
  2847.  
  2848.  
  2849.  
  2850.  
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858.  
  2859. Version 2.9: 921203
  2860.  
  2861. COM-AND: IBM PC Communications Script Language                 Page  49
  2862.  
  2863.  
  2864. V.    Script Language Commands (continued)
  2865.  
  2866.  
  2867.  ->    IF <condition> (continued)
  2868.  
  2869.          IF conditions may be joined with AND, OR, and XOR within one
  2870.          IF statement.  Parenthesization is also supported.  For
  2871.          example, the statement:
  2872.  
  2873.              IF NOT (FLAG(0) or FLAG(1)) and FLAG(2)
  2874.             ...
  2875.  ->            ENDIF
  2876.  
  2877.          AND's FLAG(2) with the negated result of an OR between FLAG(0)
  2878.          and FLAG(1).  All clauses are evaluated before the IF is per-
  2879.          formed.  In simpler words, FLAG(2) must be "on", AND both
  2880.          FLAG(1) and FLAG(0) must be "off".
  2881.  
  2882.          In the above example, the NOT applies to the result of the
  2883.          parenthetical "(FLAG(0) or FLAG(1))".  When "NOT" precedes a
  2884.          condition without parentheses it applies ONLY to that condi-
  2885.          tion.   For example the two fragments below are equivalent:
  2886.  
  2887.          IF NOT FLAG(0) and FLAG(1)  =   IF NOT FLAG(0)
  2888.         ...             =    IF FLAG(1)
  2889.  ->        ENDIF             =       ...
  2890.                      =       ENDIF
  2891.                      =    ENDIF
  2892.  
  2893.  ->    INC Nx
  2894.  
  2895.          The INC command performs the instruction:    Nx = Nx+1.  No error
  2896.          checking is performed;  should the value exceed the range of a
  2897.          numeric variable, results are unpredictable.  Example:
  2898.  
  2899.  ->         INC N1             ; N1 = N1+1
  2900.  
  2901.  ->    INIT Nx <number>
  2902.  
  2903.          The INIT statement assigns a value to a numeric variable just as
  2904.          ASSIGN assigns a value to a string variable.  Example:
  2905.  
  2906.  ->         INIT N5 5             ; Initialize N5
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912.  
  2913.  
  2914. Version 2.9: 921203
  2915.  
  2916. COM-AND: IBM PC Communications Script Language                 Page  50
  2917.  
  2918.  
  2919. V.    Script Language Commands (continued)
  2920.  
  2921.  
  2922.     INPUT Nx <address>
  2923.  
  2924.          The INPUT statement performs a machine level INPUT instruction
  2925.          using the address given.  WARNING: If you're not sure what a
  2926.          'machine level INPUT instruction' is... do not use this!
  2927.  
  2928.          INPUT N0 0x61         ; Read the speaker driver chip
  2929.  
  2930.     ISDLFILE <string>
  2931.  
  2932.          The ISDLFILE statement tests for the presence of a file named
  2933.          in <string> in the current download directory (see SET DLDIR).
  2934.          <String> must contain an unqualified file.ext, (it should not
  2935.          contain a fully pathed file name).  ISDLFILE sets the SUCCESS
  2936.          condition according to the presence of the named file.
  2937.          Example:
  2938.  
  2939.          ISDLFILE "COM-AND.EXE"  ; Is this file in download dir?
  2940.  
  2941.          Note: ISDLFILE may also be used with IF as the conditional
  2942.          test (e.g. IF ISDLFILE S0 ...).
  2943.  
  2944.  ->    ISFILE <string>
  2945.  
  2946.          The ISFILE statement tests for the presence of a file named in
  2947.          <string>.    <String> contains an unqualified file.ext (or may
  2948.          contain a fully pathed file name).  ISFILE sets the SUCCESS
  2949.          condition according to the presence of the named file.  Example:
  2950.  
  2951.  ->         ISFILE "COM-AND.EXE"    ; Is this file in current dir?
  2952.          ISFILE "D:\COM-AND\COM-AND.EXE"
  2953.  
  2954.          Note: ISFILE may also be used with IF as the conditional
  2955.          test (e.g. IF ISFILE S0 ...).
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969. Version 2.9: 921203
  2970.  
  2971. COM-AND: IBM PC Communications Script Language                 Page  51
  2972.  
  2973.  
  2974. V.    Script Language Commands (continued)
  2975.  
  2976.  
  2977.     ISSCFILE <string>
  2978.  
  2979.          The ISSCFILE statement tests for the presence of a potential
  2980.          script file named in <string> in the current directory and in
  2981.          the drive:subdirectory specified through the COM-AND= environ-
  2982.          ment variable.  <String> must contain an unqualified file.ext,
  2983.          (or may contain a fully pathed file name).  The SUCCESS
  2984.          condition is set according to the presence of the named file.
  2985.          Example:
  2986.  
  2987.          ISSCFILE "STCLOGON'     ; Is this file available?
  2988.  
  2989.          Note: ISSCFILE may also be used with IF as the conditional
  2990.          test (e.g. IF ISSCFILE S0 ...).
  2991.  
  2992.  ->    ITOA Nx Sx
  2993.  
  2994.          The ITOA statement converts a value in a numeric variable to
  2995.          a string variable.  The value is left justified, with leading
  2996.          zeroes suppressed.  Example:
  2997.  
  2998.          N0 = 0             ; N0 now contains 0
  2999.  ->         ITOA N0 S1          ; S1 now contains "0"
  3000.  
  3001.     ITOC Nx Sx[(#)]
  3002.  
  3003.          The ITOC statement converts a value to a single character (for
  3004.          non-ASCII values).  Only a single character is deposited, the
  3005.          low 8 bits of the value.  Example:
  3006.  
  3007.          N0 = 1             ; N0 now contains 1 (which is SOH)
  3008.          ITOC N0 S1          ; S1(0:0) now contains SOH
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024. Version 2.9: 921203
  3025.  
  3026. COM-AND: IBM PC Communications Script Language                 Page  52
  3027.  
  3028.  
  3029. V.    Script Language Commands (continued)
  3030.  
  3031.  ->    KEYGET Sx
  3032.  
  3033.          The KEYGET statement waits for and reads a single keystroke.
  3034.          The returned string is formatted to distinguish the various
  3035.          possible keystrokes.
  3036.  
  3037.          Printable ASCII keystrokes return one character in Sx.
  3038.  
  3039.          Non-printable ASCII keystrokes (e.g.  ESC) are returned as two
  3040.          hex digits (e.g.  ESC returns "1B").
  3041.  
  3042.          Special keys (function and cursor keys) are returned as four
  3043.          hex digits, the last two being '00'.  For example, the F1 key
  3044.          is returned as "3B00".  Example:
  3045.  
  3046.  ->         KEYGET S3             ; Read one keystroke
  3047.  
  3048.  ->    KFLUSH
  3049.  
  3050.          The KFLUSH statement flushes the keyboard of keystrokes.  It
  3051.          is intended for conditions where type-ahead is not appropriate
  3052.          (e.g.  under error conditions).  Example:
  3053.  
  3054.  ->         KFLUSH             ; Throw away key entry
  3055.  
  3056.     LD Sx <number>
  3057.  
  3058.          The LD command returns a long distance string from the dialing
  3059.          directory (or blanks).  A directory number may be specified
  3060.          (0,1,2,3,4 are allowed, 1="+",2="-",3="#",4="@", and 0 is a
  3061.          place holder).  Note the number field is not optional.  Example:
  3062.  
  3063.          LD S0 1                 ; Fetch the "+" string
  3064.  
  3065.     LEGEND <string>
  3066.  
  3067.          The LEGEND statement places the given text into the status line
  3068.          on the 25th line of the screen.  If <string> is blank, the
  3069.          status line reverts to COM-AND status line notes during script
  3070.          processing.  Example:
  3071.  
  3072.          LEGEND "Scripted host mode in effect: Press ESC to abort"
  3073.  
  3074.  
  3075.  
  3076.  
  3077.  
  3078.  
  3079. Version 2.9: 921203
  3080.  
  3081. COM-AND: IBM PC Communications Script Language                 Page  53
  3082.  
  3083.  
  3084. V.    Script Language Commands (continued)
  3085.  
  3086.  
  3087.     LENGTH Sx Nx
  3088.  
  3089.          The LENGTH statement computes the current length of the string
  3090.          Sx (1,2,3...80) and places length in the numeric variable Nx.
  3091.          Example:
  3092.  
  3093.          S0 = "   "              ; Set-up a value
  3094.          LENGTH S0 N0         ; N0 should now contain 3
  3095.  
  3096.          Note: lengths range from 0 through 80, while character columns
  3097.          range from 0 through 79.
  3098.  
  3099.     LJ Sx
  3100.  
  3101.          The LJ command left justifies the contents of the given string
  3102.          variable (within its actual length).  Example:
  3103.  
  3104.          LJ S0                 ; Left justify
  3105.  
  3106.     LOAD DEFAULT
  3107.     LOAD (DIAL!MACR!ACCE) <fname>
  3108.     LOAD (STRING!NUMERIC!ALLOC!FSAVEI!FSAVEO) <fname>
  3109.  
  3110.          The LOAD command loads a settings file (either the dialing
  3111.          directory, macro definition, accessory definition, defaults,
  3112.          or allocated variables) or script values (strings/numeric/
  3113.          allocated variables, or FSAVEI/O stacks).    Example:
  3114.  
  3115.          LOAD DIAL "com-and.dir"         ; Load original dial dir
  3116.          LOAD DEFAULT             ; Note: takes no file name
  3117.          LOAD STRING "strings.tmp"       ; Reset S0-S29 to saved vals
  3118.  
  3119.          Note:  "LOAD DIAL <name>" is equivalent to "DLOAD <name>".
  3120.          MLOAD, ALOAD and RESET are similarly redefined.
  3121.  
  3122.  ->    LOCATE <number> <number>
  3123.  
  3124.          The LOCATE statement positions the cursor to the row and
  3125.          optionally the column specified by the arguments.    The first
  3126.          argument is the row number (0-24, or 0-42).  The second number
  3127.          is the column number (0-79).  Note:  a column argument requires
  3128.          a row argument.  Example:
  3129.  
  3130.  ->         LOCATE  0,0         ; Position to home (upper left)
  3131.  
  3132.  
  3133.  
  3134. Version 2.9: 921203
  3135.  
  3136. COM-AND: IBM PC Communications Script Language                 Page  54
  3137.  
  3138.  
  3139. V.    Script Language Commands (continued)
  3140.  
  3141.  
  3142.  ->    LOG OPEN <string>
  3143.  ->    LOG CLOSE
  3144.  ->    LOG SUSPEND
  3145.  ->    LOG RESUME
  3146.     LOG MARKED (ON!OFF)
  3147.  
  3148.          The LOG subcommands OPEN a file for logging, CLOSE an open LOG
  3149.          file, SUSPEND logging, RESUME logging after suspension, and turn
  3150.          timestamp MARKing in the log on/off.
  3151.  
  3152.          The LOG OPEN command requires a file name in <string>.  <String>
  3153.          contains an unqualified file.ext (or may contain a fully
  3154.          pathed file name, not PROCOMM compatible).  Example:
  3155.  
  3156.  ->         LOG OPEN "Log.txt"      ; Open log file and start logging
  3157.          LOG OPEN "E:log.txt"    ; OPen log on RAM drive
  3158.  
  3159.          LOG OPEN sets the SUCCESS/FAILURE condition (tested with
  3160.          the IF statement).
  3161.  
  3162.     LOWER Sx
  3163.  
  3164.          The LOWER statement lower cases all alphabetic characters in
  3165.          Sx.  Example:
  3166.  
  3167.          LOWER S5             ; Force all lower case
  3168.  
  3169.  ->    MACRO <number> [Sx]
  3170.  
  3171.          The MACRO statement (1) transmits macro entry number 0-9 from
  3172.          the current Macro Definition file (Alt-M) or (2) deposit
  3173.          the macro string 0-9 into a string variable.  Example:
  3174.  
  3175.  ->         MACRO 8             ; Send macro #8, which winks
  3176.          MACRO 8 S0          ; Read macro #8 into a string variable
  3177.  
  3178.  
  3179.  
  3180.  
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189. Version 2.9: 921203
  3190.  
  3191. COM-AND: IBM PC Communications Script Language                 Page  55
  3192.  
  3193.  
  3194. V.    Script Language Commands (continued)
  3195.  
  3196.  
  3197.  ->    MANUAL <number>
  3198.  
  3199.          The MANUAL statement invokes an interactive window (i.e. as if
  3200.          in CRT mode, in response to an Alt'd Key).  The number operand
  3201.          is the scan code equivalent of the Alt'd or Function key used
  3202.          to invoke the window in interactive mode.    For example:
  3203.  
  3204.          MANUAL 0x2000          ; Invoke Alt-D (Alt-D = 0x2000)
  3205.  
  3206.          The interactive window is terminated with ESCape (in all cases
  3207.          except Alt-F10).  The script author is referred to a list of
  3208.          extended keycodes for the operand.  Simply, however:
  3209.  
  3210.         ALT  Q,W,E,R,T,Y,U,I,O,P    -> 0x10 through 0x19
  3211.         ALT  A,S,D,F,G,H,J,K,L        -> 0x1E through 0x26
  3212.         ALT  Z,X,C,V,B,N,M        -> 0x2C through 0x32
  3213.         F1 through F10            -> 0x3B through 0x44
  3214.         ALT  1,2,3,4,5,6,7,8,9,0,-,=    -> 0x78 through 0x83
  3215.         PgUp, PgDn            -> 0x49, 0x51
  3216.  
  3217.          These values make the first two digits of the hex equivalent.
  3218.          The second two digits are always '00'.
  3219.  
  3220.  ->    MATGET row col attr len Sx
  3221.  
  3222.          The MATGET statement performs the MGET function, i.e.  reading
  3223.          the keyboard for a length with masked echo, with cursor
  3224.          positioning and color control.  Example:
  3225.  
  3226.  ->         MATGET 0 0 15 5 S5      ; Read up to 5 chars into S5 from 0,0
  3227.          MATGET 0 0 (black white) 5 S5
  3228.  
  3229.          Note:  the cursor is left positioned after the last character
  3230.          read.
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.  
  3243.  
  3244. Version 2.9: 921203
  3245.  
  3246. COM-AND: IBM PC Communications Script Language                 Page  56
  3247.  
  3248.  
  3249. V.    Script Language Commands (continued)
  3250.  
  3251.  
  3252.     MCR Nx
  3253.  
  3254.          The MCR command reads the modem control register and returns
  3255.          an 8 bit value in a numeric register.  Example:
  3256.  
  3257.          MCR N0             ; Read the MCR
  3258.  
  3259.          The format of the bits of the MCR are (please refer to your
  3260.          modem's documentation):
  3261.  
  3262.        (msb) xxxxxxxx (lsb)
  3263.             ^------------------------  DTR (data terminal ready)
  3264.            ^-------------------------  RTS (request to send)
  3265.           ^--------------------------  OUT1
  3266.          ^---------------------------  OUT2
  3267.         ^----------------------------  LOOPBACK
  3268.            ^-----------------------------  Unused
  3269.           ^------------------------------  Unused
  3270.          ^-------------------------------  Unused
  3271.  
  3272.  ->    MDIAL <string>
  3273.  
  3274.          The MDIAL statement dials the number in <string> manually.  The
  3275.          value in <string> must be a valid (to the modem) telephone num-
  3276.          ber, and is limited to 14 characters width.  Example:
  3277.  
  3278.  ->         MDIAL "245-9110"        ; Dial P/Link direct
  3279.  
  3280.     MDIR <string>
  3281.  
  3282.          The MDIR statement creates a subdirectory specified as drive:
  3283.          path in the string operand.  MDIR performs exactly as the DOS
  3284.          MD command, succeeding and failing in exactly the same cases.
  3285.          MDIR sets SUCCESS or FAILURE according to the result.  Example:
  3286.  
  3287.          MDIR "A:\TEMP"             ; Create a temp subdir
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299. Version 2.9: 921203
  3300.  
  3301. COM-AND: IBM PC Communications Script Language                 Page  57
  3302.  
  3303.  
  3304. V.    Script Language Commands (continued)
  3305.  
  3306.  
  3307.  ->    MESSAGE <string>
  3308.  
  3309.          The MESSAGE statement displays a line of text on the local
  3310.          console.  If logging is enabled, the text is logged as well.
  3311.          Control characters (such as ^G, bell) are embedded in the usual
  3312.          manner.  No carriage return/line feed is issued with the
  3313.          <string> unless contained in <string>.  Example:
  3314.  
  3315.  ->         MESSAGE "^GDialing the SOURCE^M"
  3316.  
  3317.  ->    MGET Sx <number>
  3318.  
  3319.          The MGET statement works exactly as the GET statement, taking
  3320.          text from the keyboard (up to a carriage return or <number>
  3321.          length).  However, the echo is 'masked'.  Asterisks are echoed
  3322.          in place of the entry.  Example:
  3323.  
  3324.  ->         MESSAGE "^MEnter a password:"
  3325.  ->         MGET S0 15          ; Get up to 15 characters
  3326.  ->         TRANSMIT S0         ; Transmit the entry
  3327.  ->         TRANSMIT "^M"           ; And a cr to terminate
  3328.  
  3329.  ->    MLOAD <string>
  3330.  
  3331.          The MLOAD statement loads a new Macro Definition file (Alt-M).
  3332.          The MLOAD command requires a file name in <string>.  <String>
  3333.          contains an unqualified file.ext (or may contain a fully
  3334.          pathed file name).  Example:
  3335.  
  3336.  ->         MLOAD "COM-AND.MAC"           ; Load original macro def
  3337.          MLOAD "C:\SOURCE\COM-AND.MAC" ; Load special macros
  3338.  
  3339.          Note: The file name is limited to 27 characters in length.
  3340.          See also LOAD MACRO.
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354. Version 2.9: 921203
  3355.  
  3356. COM-AND: IBM PC Communications Script Language                 Page  58
  3357.  
  3358.  
  3359. V.    Script Language Commands (continued)
  3360.  
  3361.  
  3362.     MSR Nx
  3363.  
  3364.          The MSR command reads the modem status register and returns the
  3365.          8 bit value in a numeric register.  Example:
  3366.  
  3367.          MSR N0             ; Read the MSR
  3368.  
  3369.          The format of the bits of the MSR are (please refer to your
  3370.          modem's documentation):
  3371.  
  3372.        (msb) xxxxxxxx (lsb)
  3373.             ^------------------------  Change in CTS
  3374.            ^-------------------------  Change in DSR
  3375.           ^--------------------------  Change in RING indicator
  3376.          ^---------------------------  Change in received line signal
  3377.         ^----------------------------  CTS (Clear to send)
  3378.            ^-----------------------------  DSR (Data set ready)
  3379.           ^------------------------------  RI  (Ring indicator)
  3380.          ^-------------------------------  RLSD (received line signal)
  3381.  
  3382.  ->    MUL Nx Ny Nz
  3383.  
  3384.          The MUL command performs the instruction:    Nz = Nx*Ny.  No error
  3385.          checking is performed;  should the value exceed the range of a
  3386.          numeric variable, results are unpredictable.  Example:
  3387.  
  3388.  ->         MUL N1 N2 N3         ; N3 = N1*N2
  3389.  
  3390.          An expression may be used for Nx or Ny if it is entirely
  3391.          contained within parentheses.
  3392.  
  3393.  
  3394.  
  3395.  
  3396.  
  3397.  
  3398.  
  3399.  
  3400.  
  3401.  
  3402.  
  3403.  
  3404.  
  3405.  
  3406.  
  3407.  
  3408.  
  3409. Version 2.9: 921203
  3410.  
  3411. COM-AND: IBM PC Communications Script Language                 Page  59
  3412.  
  3413.  
  3414. V.    Script Language Commands (continued)
  3415.  
  3416.  
  3417.     Nx = <expression>
  3418.  
  3419.          Numeric expressions may be computed and assigned directly with
  3420.          the syntax "Nx = <expression>".  <Expression> is any legitimate
  3421.          algebraic statement.  For example:
  3422.  
  3423.          N0 = N1*(N2+N3)
  3424.          N0 = N5 = N1*(N2+N3)
  3425.  
  3426.          Values may be literal or numeric variables.  Operators are:
  3427.  
  3428.          "+", (addition),
  3429.          "-", (subtraction),
  3430.          "/", (division),
  3431.          "*", (multiplication),
  3432.          "\", (returns the remainder of division),
  3433.          "="  (store partial result)
  3434.          "~"  (bitwise complement),
  3435.          "&"  (bitwise AND),
  3436.          "|"  (bitwise OR),
  3437.          "^"  (bitwise XOR),
  3438.  
  3439.  
  3440.          Parentheses may be used to clarify ambiguous expressions (unless
  3441.          parentheses are used, the expression is evaluated from left to
  3442.          right), with the following precedences:
  3443.  
  3444.          "(",")"                 highest precedence
  3445.          "~", "&", "|", "^"      second precedence
  3446.          "*", "/" and "\"        third precedence
  3447.          "+" and "-"             fourth precedence
  3448.          "="                     lowest precedence
  3449.  
  3450.          Numeric variables may also be 'indexed'.  For example, N0[1] is
  3451.          N1, N1[1] is N2, and so on.  Arithmetic expressions are allowed
  3452.          as indices.  Indices may be used on either side of a store (e.g.
  3453.          "N0[N1] = N2[N3]").  An index does not 'wrap' (i.e.  N0[-1] is
  3454.          N0, not N99).
  3455.  
  3456.          Strings and substrings may be used if they contain valid numeric
  3457.          values.  A zero is used (and an error message is issued) when a
  3458.          string does not contain a valid numeric value.
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464. Version 2.9: 921203
  3465.  
  3466. COM-AND: IBM PC Communications Script Language                 Page  60
  3467.  
  3468.  
  3469. V.    Script Language Commands (continued)
  3470.  
  3471.  
  3472.     OUTPUT <address> Nx
  3473.  
  3474.          The OUTPUT statement performs a machine level OUTPUT instruction
  3475.          using the address given.  WARNING: If you're not sure what a
  3476.          'machine level OUTPUT instruction' is... do not use this!
  3477.  
  3478.          OUTPUT N0 0x61         ; Write the speaker driver chip
  3479.  
  3480.     ON ESCAPE GOSUB <label>
  3481.  
  3482.          The ON ESCAPE GOSUB statement specifies special action to
  3483.          take when the operator presses the ESC key.  If this is not
  3484.          set, the operator is prompted "Do you wish to terminate the
  3485.          script?".  The script writer may choose to intercept the ESC
  3486.          key with a subroutine for the special action.  Example:
  3487.  
  3488.          ON ESCAPE GOSUB ESCAPE  ; Subroutine label had best exist!
  3489.  
  3490.          Like the GOSUB statement, the operand of this statement may be
  3491.          a literal label, a quoted label, or a string variable containing
  3492.          the label as text.
  3493.  
  3494.          Note:  Giving the label as blank is equivalent to the statement
  3495.          ON ESCAPE CLEAR, below.  The ON ESCAPE label may be read (using
  3496.          the "_ONEScape" intrinsic), changed, and later reset to its
  3497.          previous condition, using this fact.
  3498.  
  3499.          Note:  WOPEN provides its OWN escape handler.  When WCLOSE is
  3500.          executed, the ON ESCAPE label prior to the WOPEN is restored.
  3501.          Therefore, ON ESCAPE used during a WOPEN sequence has NO effect
  3502.          outside of the sequence.
  3503.  
  3504.          Note:  Although the ON ESCAPE label is NOT cleared upon FCALL,
  3505.          on FRETURN, the ON ESCAPE label holding at FCALL is replaced.
  3506.          Therefore, ON ESCAPE used during a FCALL has NO effect outside
  3507.          of the FCALLed file.
  3508.  
  3509.     ON ESCAPE CLEAR
  3510.  
  3511.          The ON ESCAPE CLEAR statement clears a previous ON ESCAPE GOSUB
  3512.          setting.  After this statement, pressing the ESC key results in
  3513.          the COM-AND prompt "Do you wish to terminate the script?".
  3514.          Example:
  3515.  
  3516.          ON ESCAPE CLEAR         ; Return to default condition
  3517.  
  3518.  
  3519. Version 2.9: 921203
  3520.  
  3521. COM-AND: IBM PC Communications Script Language                 Page  61
  3522.  
  3523.  
  3524. V.    Script Language Commands (continued)
  3525.  
  3526.  
  3527.     ON SILENCE GOSUB <label>
  3528.  
  3529.          The ON SILENCE GOSUB statement specifies special action to
  3530.          take after a <duration> of silence on the comm line.  The
  3531.          <duration> defaults to 300 seconds (5 min), and may be set
  3532.          with the SET SILENCE command.
  3533.  
  3534.          ON SILENCE GOSUB Disconn ; Subroutine label had best exist!
  3535.  
  3536.          Like the GOSUB statement, the operand of this statement may be
  3537.          a literal label, a quoted label, or a string variable containing
  3538.          the label as text.
  3539.  
  3540.          Note:  The script must read the comm port...  with one of the
  3541.          following:  RGET, or PAUSE.  Note:  SUSPEND supercedes the ON
  3542.          SILENCE condition.
  3543.  
  3544.          Note:  When the GOSUB is executed, the ON SILENCE trap is turned
  3545.          off.  To use it again, a new ON SILENCE GOSUB must be performed
  3546.          (best in the subroutine itself).
  3547.  
  3548.          Note:  The ON SILENCE command 'primes' the timer.  Therefore,
  3549.          a loop containing ON SILENCE... never times out!  The timer is
  3550.          continuously reset.
  3551.  
  3552.     ON SILENCE CLEAR
  3553.  
  3554.          The ON SILENCE CLEAR statement clears a previous ON SILENCE
  3555.          setting.  After this statement, the comm port is not tested
  3556.          for silence.  Example:
  3557.  
  3558.          ON SILENCE CLEAR         ; Return to default condition
  3559.  
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.  
  3572.  
  3573.  
  3574. Version 2.9: 921203
  3575.  
  3576. COM-AND: IBM PC Communications Script Language                 Page  62
  3577.  
  3578.  
  3579. V.    Script Language Commands (continued)
  3580.  
  3581.  
  3582.     OVERLAY <file name> [<addr>] ; Load a file for use
  3583.     OVERLAY CLEAR             ; Clear a loaded file
  3584.  
  3585.          The OVERLAY statement loads an EXE or COM format file as machine
  3586.          language subroutines for COM-AND scripts.    Routines in the over-
  3587.          lay are invoked with the SCALL statement.    Example:
  3588.  
  3589.          OVERLAY "talker.ovl" 9  ; Load voice synth; end entry = 9
  3590.  
  3591.          The OVERLAY statement sets SUCCESS/FAIL according to the result
  3592.          of the attempt.  Refer to Appendix K for more discussion.
  3593.  
  3594.          The optional address specifies an entry point to invoke (with
  3595.          no parameters) when the overlay is terminated.  Invocation is
  3596.          automatic if specified (unless the end-entry address is invoked
  3597.          by a script through an SCALL).  The end-entry point is executed
  3598.          when any operation would terminate the overlay (e.g.  when a
  3599.          new overlay is loaded, or on Alt-X COM-AND termination).
  3600.  
  3601.  ->    PAUSE [<number>]
  3602.  
  3603.          The PAUSE statement pauses the script file for a given number of
  3604.          seconds.  The delay period defaults to 60 seconds, but may be
  3605.          explicitly set with the numeric argument.    Text received during
  3606.          the PAUSE is displayed, and analyzed for WHEN triggers. Example:
  3607.  
  3608.  ->         PAUSE 300             ; Pause for 5 minutes
  3609.  
  3610.     PERFORM <string>
  3611.  
  3612.          The PERFORM statement executes the given string as a command.
  3613.          Self modifying code is not recommended, but remote control of
  3614.          COM-AND is easily implemented with this command.  Example:
  3615.  
  3616.          S0 = "EXIT"             ; Place a command in S0
  3617.          PERFORM S0          ; Execute S0 as a command
  3618.  
  3619.     PLAY <string>
  3620.  
  3621.          The PLAY statement plays the BASIC encoded music statement in
  3622.          <string>.    The ERROR condition is set if the string cannot be
  3623.          parsed (and is therefore not sounded).  Refer to Appendix D
  3624.          for the syntax of the play statement.  Example:
  3625.  
  3626.          PLAY "t220 l8 edcdeee2 ddd2 egg2 edcdeee2 ed.d8edc1"
  3627.  
  3628.  
  3629. Version 2.9: 921203
  3630.  
  3631. COM-AND: IBM PC Communications Script Language                 Page  63
  3632.  
  3633.  
  3634. V.    Script Language Commands (continued)
  3635.  
  3636.  
  3637.     PRESERVE Sx
  3638.  
  3639.          When a value is received (either RGET, GET or MGET), it may
  3640.          contain '!'s and '^'s that would be interpreted as special
  3641.          characters ('!' = carriage return, and '^' = control).  The
  3642.          PRESERVE command, applied to a received string variable,
  3643.          modifies the value so that a subsequent TRANSMIT or MESSAGE
  3644.          command sends exactly what was received.  Example:
  3645.  
  3646.          READ S9 40 N0         ; Read 40 chars
  3647.          PRESERVE S9         ; Note: PRESERVE can expand 40 chars
  3648.          WRITE S9             ; .. to 80 - copy up to 40 to outfile
  3649.  
  3650.          NOTE: Once a string is PRESERVE'd, the preserved value holds
  3651.          across assignments.
  3652.  
  3653.     PRINT <string>
  3654.  
  3655.          The PRIN command sends the <string> to the LP1 logging device.
  3656.          The usual string edits are performed first;  however, unlike
  3657.          MESSAGE, no line advance is performed first.
  3658.  
  3659.          The PRINT command ignores the setting of the PRINTER ON!OFF
  3660.          (Ctl-PrtSc) state;  it prints regardless.    Printer error aborts
  3661.          the line, but the next PRINT command is not disabled.  Example:
  3662.  
  3663.          PRINT "^L"              ; Send a top-of-form
  3664.  
  3665.  ->    PRINTER (ON!OFF)
  3666.  
  3667.          The PRINTER command turns on and off the local LP1 logging of
  3668.          received (and echoed) text.
  3669.  
  3670.  ->    QUIT
  3671.  
  3672.          The QUIT command terminates the script execution and COM-AND.
  3673.          It may be coded at any level (for example within a subroutine
  3674.          reached through a call from a subroutine).  Example:
  3675.  
  3676.  ->         QUIT             ; Terminate the script and program
  3677.          ; Nothing past this point in the script is performed.
  3678.  
  3679.          Note also the BYE command.
  3680.  
  3681.  
  3682.  
  3683.  
  3684. Version 2.9: 921203
  3685.  
  3686. COM-AND: IBM PC Communications Script Language                 Page  64
  3687.  
  3688.  
  3689. V.    Script Language Commands (continued)
  3690.  
  3691.  
  3692.     RDIR <string>
  3693.  
  3694.          The RDIR statement removes a subdirectory specified as drive:
  3695.          path in the string operand.  RDIR performs exactly as the DOS
  3696.          RD command, succeeding and failing in exactly the same cases.
  3697.          RDIR sets SUCCESS or FAILURE according to the result.  Example:
  3698.  
  3699.          RDIR "A:\TEMP"             ; Remove a temp subdir
  3700.  
  3701.     READ Sx Nx Ny
  3702.  
  3703.          The READ command reads a string (up to Nx characters) into a
  3704.          string variable.  The input file must be opened by FOPENI.
  3705.          READ reads up to 80 characters into Sx.  If the input file was
  3706.          opened in TEXT mode, the read string terminates at the 80th byte
  3707.          or at a CR/LF pair (NOT placed in Sx as a single CR).  The count
  3708.          read is placed in Ny.  Example:
  3709.  
  3710.          READ S0 80 N4         ; Read 80 bytes; count read in N4
  3711.  
  3712.          In TEXT mode, the READ function terminates when a CR/LF is en-
  3713.          countered.  In TEXT mode, tabs are expanded to blanks.  In TEXT
  3714.          mode, the READ command stops on an ASCII EOF character (Ctl-Z)
  3715.          as well as on true end-of-file (size).
  3716.  
  3717.          In TEXT mode, when an empty record is encountered (i.e. CR/LF),
  3718.          the returned length is 0 and the returned buffer is empty.  When
  3719.          a record longer than 80 characters is encountered, the first
  3720.          READ returns a length of 80 and subsequent READ statement(s)
  3721.          return the remainder of the record.  Special note should be made
  3722.          of cases where a length of 80 exactly is returned.  Should the
  3723.          next READ return a length of 0, the record was 80 text charac-
  3724.          ters, and the 0 length record represents the record's CR/LF.
  3725.  
  3726.          The READ command sets the EOF condition on input EOF.  This may
  3727.          be tested with an 'IF EOF'.  On EOF the buffer is returned null.
  3728.  
  3729.     RENAME <oldfile> <newfile>
  3730.  
  3731.          The RENAME statement renames a file named in the command.
  3732.          The SUCCESS flag is set according to the result of the command.
  3733.          Example:
  3734.  
  3735.          RENAME "COM-AND.LOG" "COM-AND.OLD"
  3736.  
  3737.  
  3738.  
  3739. Version 2.9: 921203
  3740.  
  3741. COM-AND: IBM PC Communications Script Language                 Page  65
  3742.  
  3743.  
  3744. V.    Script Language Commands (continued)
  3745.  
  3746.  
  3747.     REDUCE Sx
  3748.  
  3749.          The REDUCE statement performs a function opposite to the PRE-
  3750.          SERVE statement.  Doubled "!"s, "^"s and "`"s are reduced to
  3751.          a single character.  [When transmitted, or written to disk,
  3752.          "!!" is written as "!", "!" is written a <cr>, and so on.]
  3753.  
  3754.          REDUCE S0             ; Reduce doubled "!"s, "^"s, and "`"s
  3755.  
  3756.     RESET
  3757.  
  3758.          The RESET statement restores default settings (Alt-S, Alt-O, and
  3759.          Alt-P) to their load-time values.    It also restores the default
  3760.          download subdirectory.  It does not reset the current subdirec-
  3761.          tory or the scrolling region coordinates.    Example:
  3762.  
  3763.          RESET             ; Equivalent to LOAD DEFAULT
  3764.  
  3765.     RESTORE [ALL]             ; Optional operand -> restore all saved
  3766.  
  3767.          The RESTORE statement restores an area saved by the SAVE state-
  3768.          ment to the screen.  The coordinates used by the SAVE statement
  3769.          are implicit to the RESTORE statement.  The RESTORE statement
  3770.          sets the SUCCESS flag according to save-stack underflow.
  3771.  
  3772.          RESTORE             ; Restore saved area
  3773.  
  3774.  ->    RETURN
  3775.  
  3776.          The RETURN command transfers control of the script processor to
  3777.          the last GOSUB executed.  RETURN effectively cancels the domain
  3778.          of any IF or SWITCH statement being processed.  The RETURN may
  3779.          be coded at any level (for example within an IF).    Example:
  3780.  
  3781.  ->         LABEL:
  3782.          ...
  3783.  ->         RETURN             ; Return to caller
  3784.  
  3785.     REWIND
  3786.  
  3787.          The REWIND statement rewinds the input file (if open).  The
  3788.          SUCCESS flag is set according to the result of the command.
  3789.          Example:
  3790.  
  3791.          REWIND             ; REWIND the input file
  3792.  
  3793.  
  3794. Version 2.9: 921203
  3795.  
  3796. COM-AND: IBM PC Communications Script Language                 Page  66
  3797.  
  3798.  
  3799. V.    Script Language Commands (continued)
  3800.  
  3801.  
  3802.  ->    RFLUSH
  3803.  
  3804.          The RFLUSH command flushes the receiver buffer of received text.
  3805.          Text being flushed is not displayed at the CRT.  Example:
  3806.  
  3807.  ->         RFLUSH             ; Flush anything left over
  3808.  ->         HANGUP             ; Disconnect the call
  3809.  
  3810.  ->    RGET Sx [<number> [<number>]]
  3811.  
  3812.          The RGET command reads the comm port for text.  Received text
  3813.          is terminated by a carriage return (in RMODE ASCII), or, if the
  3814.          optional first numeric argument was supplied, after <number>
  3815.          characters.  Receipt may also be terminated after a stated or
  3816.          unstated period of time (default is 60 seconds; the value may be
  3817.          changed with the optional second numeric argument).  Example:
  3818.  
  3819.  ->         RGET S0 24 300          ; Wait up to 5 mins for 24 characters
  3820.  
  3821.          Note:  the delay interval cannot be specified without the first
  3822.          numeric argument (length) also present.
  3823.  
  3824.          Note:  if WHEN triggers are performed during an RGET, the RGET
  3825.          length must be greater than the largest WHEN trigger string.
  3826.          If a WHEN trigger is encountered in a string, all text up to
  3827.          and including the WHEN trigger is 'eliminated' (i.e.  not
  3828.          returned by the RGET).
  3829.  
  3830.          RGET sets the SUCCESS/FAILURE condition (which may then be
  3831.          tested with the IF statement).
  3832.  
  3833.          RGET reads with either an ASCII or BINARY mode.  Its default
  3834.          is ASCII.    In ASCII mode, nulls and linefeeds are ignored,
  3835.          carriage returns end the RGET, and backspaces are performed.
  3836.          In binary mode, the RGET is terminated only by length.  The
  3837.          RGET mode is set with the SET RMODE statement.
  3838.  
  3839.     RJ Sx
  3840.  
  3841.          The RJ command right justifies the contents of the given string
  3842.          variable (within its actual length).  Example:
  3843.  
  3844.          RJ S0                 ; Right justify
  3845.  
  3846.  
  3847.  
  3848.  
  3849. Version 2.9: 921203
  3850.  
  3851. COM-AND: IBM PC Communications Script Language                 Page  67
  3852.  
  3853.  
  3854. V.    Script Language Commands (continued)
  3855.  
  3856.  
  3857.     RND <modulus> Nx
  3858.  
  3859.          The RND command computes a random number (smaller than the
  3860.          given modulus value) and places the value in Nx.  Example:
  3861.  
  3862.          RND 6 N0             ; Roll one six faced die (n0 = 0 to 5)
  3863.  
  3864.  ->    RUN <string> [WAIT]
  3865.  
  3866.          The RUN command executes any external program 'on top of'
  3867.          COM-AND.  The RUN command fails if there is insufficient
  3868.          memory to load the new program.
  3869.  
  3870.          Parameters may be passed to the new program by including
  3871.          them after the file name.    Example:
  3872.  
  3873.  ->         RUN "VCOLIB.EXE"             ; Load VCOLIB (menu mode)
  3874.          RUN "VCOLIB.EXE L GENIE.FLB" ; Load and list to CRT
  3875.  
  3876.          The optional keyword WAIT commands COM-AND to pause after
  3877.          completion, waiting for a keypress before the script continues.
  3878.  
  3879.          This command sets the SUCCESS condition according to the error
  3880.          level returned to DOS by the target program.
  3881.  
  3882.          NOTE:  The screen is saved prior to the RUN function, for
  3883.          restoration upon completion.  However, the screen size saved
  3884.          is defined by the DWINDOW currently in effect!
  3885.  
  3886.     SAVE row col row col
  3887.  
  3888.          The SAVE statement saves an area of screen on a stack.  The
  3889.          first and second arguments specify the row/column of the top-
  3890.          left of the region.  The third and fourth arguments specify the
  3891.          row/column of the bottom-right of the region.  Up to 20 regions
  3892.          may be saved at one time (given sufficient space).  The SUCCESS
  3893.          flag is set/reset according to save-stack overflow.  Example:
  3894.  
  3895.          SAVE 0 10,10 20,20       ; Save a narrow box.
  3896.  
  3897.          See also RESTORE, and the note on screen-save stack space under
  3898.          WOPEN.  When SAVE returns FAILED, do NOT perform RESTORE.    How-
  3899.          ever, WCLOSE may follow a WOPEN that returned ERROR.
  3900.  
  3901.  
  3902.  
  3903.  
  3904. Version 2.9: 921203
  3905.  
  3906. COM-AND: IBM PC Communications Script Language                 Page  68
  3907.  
  3908.  
  3909. V.    Script Language Commands (continued)
  3910.  
  3911.  
  3912.     SCALL <addr> [parms [,parms]]
  3913.  
  3914.          The SCALL instruction invokes a procedure in an overlay.  The
  3915.          address of the procedure (relative to the first 64K) must be
  3916.          supplied.    Optional numeric (nx) and string (Sx, Vx) variables
  3917.          may be listed after the mandatory address.  All parameters are
  3918.          passed by reference and may therefore be modified by the over-
  3919.          lay routine.  For example:
  3920.  
  3921.          SCALL 3 N0            ; Invoke proc at addr 3, pass/rtn N0
  3922.  
  3923.          For more discussion, refer to Appendix K.
  3924.  
  3925.     SCREEN row col row col attr Sx
  3926.  
  3927.          The SCREEN statement provides for a multi-line display within
  3928.          an area on the screen.  The leftmost column and the number of
  3929.          lines to display are defined by the box coordinates.  The color
  3930.          attribute is used on each line displayed.    Lines are displayed
  3931.          string with the string variable given, and proceeding in
  3932.          sequence.    For example:
  3933.  
  3934.          SCREEN 10,10 20,20 (black white) S0
  3935.  
  3936.          displays 11 lines from variables S0 through S10.  Note: the
  3937.          attribute ONLY applies to text written (not the whole box).
  3938.          Note:  the box width does NOT limit the line length displayed.
  3939.  
  3940.  ->    SCROLL cnt row col row col attr
  3941.  
  3942.          The SCROLL statement scrolls a region on the screen, filling
  3943.          the new lines with the specified color.  The first argument
  3944.          <cnt> specifies the number of lines to scroll (0 means clear
  3945.          the region, +ve means scroll up, -ve means scroll down).  The
  3946.          second and third arguments specify the row/column of the top
  3947.          left of the region.  The fourth and fifth arguments specify the
  3948.          row/column of the bottom-right of the region.  The last
  3949.          argument specifies the color attribute to use in the new area.
  3950.          Example:
  3951.  
  3952.  ->         SCROLL 0 10,10 20,20 15         ; White on black:    narrow box
  3953.          SCROLL 0 10,10 20,20 (black white)
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  
  3959. Version 2.9: 921203
  3960.  
  3961. COM-AND: IBM PC Communications Script Language                 Page  69
  3962.  
  3963.  
  3964. V.    Script Language Commands (continued)
  3965.  
  3966.  
  3967.  ->    SENDFILE ASCII      <string>    ; A.K.A. Buffer capture
  3968.     SENDFILE BPLUS              ; CompuServe B+ protocol
  3969.  ->    SENDFILE BYMODEM  <string>    ; Batch YMODEM
  3970.  ->    SENDFILE BYMODEMG <string>    ; Batch YMODEM-G (BYMOG works too)
  3971.  ->    SENDFILE CISB              ; CompuServe B-protocol
  3972.  ->    SENDFILE KERMIT   <string>    ; Kermit or SuperKermit
  3973.     SENDFILE QUICKB           ; CompuServe Quick B-protocol
  3974.  ->    SENDFILE RXMODEM  <string>    ; Relaxed CRC or Checksum XMODEM
  3975.  ->    SENDFILE WXMODEM  <string>    ; Windowed XMODEM
  3976.  ->    SENDFILE XMODEM   <string>    ; CRC or Checksum XMODEM
  3977.  ->    SENDFILE YMODEM   <string>    ; Simple YMODEM (not True ... (TM))
  3978.     SENDFILE ZMODEM   <string>    ; ZMODEM transfer (batch)
  3979.  
  3980.          The SENDFILE statement initiates an upload using a specific
  3981.          protocol.    The <string> argument must specify a valid file name,
  3982.          and the file must exist.  The SENDFILE command sets the SUCCESS
  3983.          condition according to the transfer.  Example:
  3984.  
  3985.  ->         SENDFILE XMODEM "com-and.arc"  ; Upload
  3986.  
  3987.          Note:  in the case of CISB, BPlus and QUICKB, you must tell the
  3988.          host the name the file is to take on your machine.
  3989.  
  3990.          Note:  CIS-B (BPlus/QuickB) provides an automated upload func-
  3991.          tion.  The automated function is NOT available within a script
  3992.          unless the script is 'reading the port', i.e.  with an RGET,
  3993.          PAUSE or SUSPEND statement.
  3994.  
  3995.  ->    SET <command...>
  3996.  
  3997.          The SET commands are discussed below in a chapter alone.
  3998.  
  3999.  ->    SHELL
  4000.  
  4001.          The SHELL command shell's to DOS using COMMAND.COM or the
  4002.          program indicated by the 'COMSPEC=' environment variable.
  4003.          Having shelled to DOS, DOS commands may be manually executed.
  4004.          However, the shell must be exited for the script to continue.
  4005.          COMMAND.COM is exited with the command "Exit".  Example:
  4006.  
  4007.  ->         SHELL             ; shell to DOS
  4008.  
  4009.          NOTE: The screen is saved prior to the SHELL function, for
  4010.          restoration upon completion.  The size of the screen saved is
  4011.          is determined by the DWINDOW currently in effect!
  4012.  
  4013.  
  4014. Version 2.9: 921203
  4015.  
  4016. COM-AND: IBM PC Communications Script Language                 Page  70
  4017.  
  4018.  
  4019. V.    Script Language Commands (continued)
  4020.  
  4021.  
  4022.     SNAME Sx
  4023.  
  4024.          The SNAME command returns the current script file name in the
  4025.          variable given.  Example:
  4026.  
  4027.          SNAME S0             ; shell to DOS
  4028.  
  4029.          This function is provided to make it possible for a script
  4030.          'EXECUTE'd from another script file to return to the original
  4031.          script.  Note: when a script is started, all string variables
  4032.          are set to blank.    When a script is 'EXECUTE'd string variables
  4033.          retain their current values.
  4034.  
  4035.  ->    SOUND <number> <number>
  4036.  
  4037.          The SOUND statement generates a tone of a specific frequency
  4038.          for a duration specified in milliseconds.    The first argument is
  4039.          the frequency (in Hz).  The second argument is duration.  Both
  4040.          may be specified as literal values or as variables.  Example:
  4041.  
  4042.  ->         SOUND 440 500         ; Sound a 'A' for half-a-sec
  4043.  
  4044.     SSIZE Nx
  4045.  
  4046.          The SSIZE statement returns the current # of screen lines
  4047.          in the given numeric variable.  Example:
  4048.  
  4049.          SSIZE N0             ; Compute # screen lines
  4050.  
  4051.  
  4052.  
  4053.  
  4054.  
  4055.  
  4056.  
  4057.  
  4058.  
  4059.  
  4060.  
  4061.  
  4062.  
  4063.  
  4064.  
  4065.  
  4066.  
  4067.  
  4068.  
  4069. Version 2.9: 921203
  4070.  
  4071. COM-AND: IBM PC Communications Script Language                 Page  71
  4072.  
  4073.  
  4074. V.    Script Language Commands (continued)
  4075.  
  4076.  
  4077.     STACK <string>
  4078.     STACK CLEAR
  4079.  
  4080.          The STACK statement stores the given string (if there is room)
  4081.          in the BIOS keyboard buffer.  STACK CLEAR clears the BIOS key-
  4082.          board buffer.  STACK may be used prior to BYE to effect a chain
  4083.          to another program.  For example:
  4084.  
  4085.          STACK "PC-VCO!"         ; Stack cmd to load PC-VCO
  4086.  ->         BYE             ; Exit COM-AND without hanging up
  4087.  
  4088.          Note: STACK, like HITKEY, sets a state inhibiting typethrough
  4089.          until the next KEYGET/GET/MGET/ATGET/MATGET/KFLUSH.
  4090.  
  4091.          To STACK a non-ASCII key, preceded the 'extended code' with null
  4092.          (^@).  Please refer to Appendix H of this document for a table
  4093.          of extended keycodes as used by the STACK command.
  4094.  
  4095.          Note:  the STACK command uses the EBL keyboard stack, if EBL
  4096.          is available.  Refer to Appendix (F) below for EBL information.
  4097.  
  4098.          The BIOS keyboard buffer is limited to 15 characters.  The EBL
  4099.          provides a larger buffer for STACK's use.  [Note:  utilities
  4100.          and TSRs may provide a larger keyboard buffer.  If so, COM-AND
  4101.          uses the larger buffer.]
  4102.  
  4103.     STORE (DEFA!DIAL!MACR!ACCE)
  4104.     STORE (STRING!NUMERIC!ALLOC!FSAVEI!FSAVEO) <fname>
  4105.  
  4106.          The STORE command writes a settings file (either the dialing
  4107.          directory, macro definition, accessory definition, defaults),
  4108.          or may be used to save (ALL) script strings/allocated/numeric
  4109.          variables and the FSAVE stacks.  Example:
  4110.  
  4111.          STORE DIAL              ; Update current dial dir
  4112.          STORE DEFAULT             ; Note: takes no file name
  4113.          STORE NUMERIC "script.num"      ; Save N0-N99 to a file
  4114.  
  4115.          The STORE subcommand takes a file-name parameter when script
  4116.          variables/stacks are being stored.  The other statements store
  4117.          to the file currently in use.  STORE ALLOCATED (storing
  4118.          allocated variables to a disk file) requires a specific file
  4119.          name for the store.
  4120.  
  4121.          Note:  'STORE DEFAULTS' is equivalent to 'UPDATE'.
  4122.  
  4123.  
  4124. Version 2.9: 921203
  4125.  
  4126. COM-AND: IBM PC Communications Script Language                 Page  72
  4127.  
  4128.  
  4129. V.    Script Language Commands (continued)
  4130.  
  4131.  
  4132.  ->    STRCAT Sx Sy
  4133.  
  4134.          The STRCAT statement concatenates two strings, Sy onto Sx.  The
  4135.          concatenation occurs after the last character of Sx.  Example:
  4136.  
  4137.  ->         STRCAT S0 S1         ; Concat S1 onto S0
  4138.          STRCAT S0 S1(5:10)      ; Extract substring of S1 and add
  4139.  
  4140.          Note: the command above is equivalent to the following:
  4141.  
  4142.          CONCAT S0 * S1         ; Another way to say this
  4143.  
  4144.  ->    STRCMP Sx Sy
  4145.  
  4146.          The STRCMP statement compares two strings (case sensitive)
  4147.          and sets the SUCCESS flag if they are identical.  Example:
  4148.  
  4149.  ->         STRCMP S0 S1         ; Compare strings in S0 & S1
  4150.  ->         IF SUCCESS          ; IF they are equal...
  4151.         ...             ; ...
  4152.  
  4153.          Note:  STRCMP may also be used with IF as the conditional test
  4154.          (e.g.  IF STRCMP S0 S1 ...).
  4155.  
  4156.  ->    STRCPY Sx <string>
  4157.  
  4158.          The STRCPY statement assigns the value in <string> to Sx.
  4159.          It is equivalent to the ASSIGN statement.    Example:
  4160.  
  4161.  ->         STRCPY  S0 S1         ; S0 = S1, or ASSIGN S0 S1
  4162.  
  4163.  
  4164.  
  4165.  
  4166.  
  4167.  
  4168.  
  4169.  
  4170.  
  4171.  
  4172.  
  4173.  
  4174.  
  4175.  
  4176.  
  4177.  
  4178.  
  4179. Version 2.9: 921203
  4180.  
  4181. COM-AND: IBM PC Communications Script Language                 Page  73
  4182.  
  4183.  
  4184. V.    Script Language Commands (continued)
  4185.  
  4186.  
  4187.  ->    STRFMT Sx <fmtstr> <parms>
  4188.  
  4189.          The STRFMT statement formats variables (and literals) into a
  4190.          template and places the result into a string variable.  The
  4191.          argument <fmtstr> above is the formatting template.  The
  4192.          argument list <parms> above is a list of variable names (and
  4193.          literals and substrings) to format.  Example:
  4194.  
  4195.  ->         STRFMT S0 "The answer is %d %s" N1 S1
  4196.  
  4197.          In the above example, the value in N1 replaces %d and the text
  4198.          in S1 replaces %s.  Format specifiers in the template have the
  4199.          form:
  4200.  
  4201.              %[<flags>][<width>][.<precision>]<type>
  4202.  
  4203.          <Flags>         are "-" meaning left justify the argument, and
  4204.                  "+" meaning display the argument with a plus
  4205.                  or minus sign (if numeric).  The defaults are
  4206.                  right justified and signed only if negative.
  4207.  
  4208.          <width>         specifies the minimum number of characters to
  4209.                  be displayed.  If <width> is greater than the
  4210.                  value, blanks are added to the left or right
  4211.                  (according to the justification).    If <width>
  4212.                  is prefixed by 0, 0's are used in place of
  4213.                  blanks.
  4214.  
  4215.          .<precision>    specifies the minimum number of digits to
  4216.                  display.  0's are added to the left of the
  4217.                  formatted value to achieve <precision>.
  4218.  
  4219.          <type>         "d" specifies decimal numeric values (signed)
  4220.                  "u" specifies unsigned decimal values
  4221.                  "x" specifies hex values
  4222.                  "s" specifies string values
  4223.  
  4224.  
  4225.          The <fmtstr> is scanned from left to right for format
  4226.          specifiers.  As specifiers are found, parameters after <fmtstr>
  4227.          are extracted and used sequentially.  This usage is similar to
  4228.          the Microsoft "C" compiler's usage.
  4229.  
  4230.  
  4231.  
  4232.  
  4233.  
  4234. Version 2.9: 921203
  4235.  
  4236. COM-AND: IBM PC Communications Script Language                 Page  74
  4237.  
  4238.  
  4239. V.    Script Language Commands (continued)
  4240.  
  4241.  
  4242.  ->    SUB Nx Ny Nz
  4243.  
  4244.          The SUB command performs the instruction:    Nz = Nx-Ny.  No
  4245.          error check is performed; should the value exceed the range
  4246.          of a numeric variable, results are unpredictable.    Example:
  4247.  
  4248.  ->         SUB N1 N2 N3         ; N3 = N1-N2
  4249.  
  4250.          An expression may be used for Nx or Ny if it is entirely
  4251.          contained within parentheses.
  4252.  
  4253.     SUBDIR Sx
  4254.  
  4255.          The SUBDIR statement stores the current default drive:sub-
  4256.          directory into the target variable.  Example:
  4257.  
  4258.          SUBDIR S0             ; Get current drive:path
  4259.  
  4260.  ->    SUBSTR Sx Sy <number> <number>
  4261.  
  4262.          The SUBSTR statement extracts a substring from Sy and places
  4263.          it in Sx.    The beginning character position is specified by the
  4264.          first numeric argument (0,1,2...).  The second numeric argument
  4265.          specifies the length of the substring.  Example:
  4266.  
  4267.  ->         SUBSTR S0 S1 5 10          ; S0 = S1 at 5 for 10
  4268.  
  4269.          Note: the command above is equivalent to the following:
  4270.  
  4271.          S0 = S1(5:14)         ; Another way to say this
  4272.  
  4273.  
  4274.  
  4275.  
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.  
  4282.  
  4283.  
  4284.  
  4285.  
  4286.  
  4287.  
  4288.  
  4289. Version 2.9: 921203
  4290.  
  4291. COM-AND: IBM PC Communications Script Language                 Page  75
  4292.  
  4293.  
  4294. V.    Script Language Commands (continued)
  4295.  
  4296.  
  4297.     SUSPEND FOR <number> <number>
  4298.  ->    SUSPEND UNTIL <number> <number>
  4299.  
  4300.          The SUSPEND FOR statement suspends COM-AND for the duration
  4301.          indicated (in military form).  The suspension may be up to 24
  4302.          hours.  The first argument is hours (0-23) and the second
  4303.          argument is minutes.  Example:
  4304.  
  4305.          SUSPEND FOR 0 30         ; Wait a-haffa hour
  4306.  
  4307.          The SUSPEND UNTIL statement suspends COM-AND until the time
  4308.          indicated (in military form).  Example:
  4309.  
  4310.  ->         SUSPEND UNTIL 4 30      ; 4:30 AM
  4311.  
  4312.          Incoming text received during SUSPEND is displayed on the
  4313.          screen.  Keystrokes are transmitted.  The SUSPEND may be
  4314.          terminated with the ESC key.  WHEN is active during SUSPEND.
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.  
  4331.  
  4332.  
  4333.  
  4334.  
  4335.  
  4336.  
  4337.  
  4338.  
  4339.  
  4340.  
  4341.  
  4342.  
  4343.  
  4344. Version 2.9: 921203
  4345.  
  4346. COM-AND: IBM PC Communications Script Language                 Page  76
  4347.  
  4348.  
  4349. V.    Script Language Commands (continued)
  4350.  
  4351.  
  4352.  ->    SWITCH (Sx!Nx)
  4353.  
  4354.          The SWITCH statement declares a variable to test and a domain
  4355.          for transfer of control.  A SWITCH statement must be followed
  4356.          an ENDSWITCH statement.  Lines between the SWITCH and the
  4357.          ENDSWITCH statements are the domain of the SWITCH function.
  4358.  
  4359.          Within the SWITCH domain, CASE statements test the given
  4360.          variable for a value (not case sensitive).  If a match is
  4361.          obtained, the statements following the CASE statement are
  4362.          executed until an ENDCASE is encountered.
  4363.  
  4364.          A DEFAULT statement specifies a clause to execute if none of
  4365.          the prior CASEs have been executed.  The DEFAULT clause is
  4366.          terminated by an ENDCASE; just as a CASE statement.
  4367.  
  4368.          Schematically:
  4369.  
  4370.  ->         SWITCH (Sx!Nx)             ; Set variable to test.
  4371.            CASE (<string>!<number>)      ; Match Sx and <string>
  4372.            ...                 ; .. execute if a match
  4373.  ->           ENDCASE                 ; End of first case
  4374.  ->           CASE <string>             ; <String> = "_NULL" -> empty
  4375.            ...
  4376.  ->           ENDCASE                 ; End of second case
  4377.            ...
  4378.  ->           DEFAULT                 ; DEFAULT executed if no case
  4379.            ...                 ; .. was matched
  4380.  ->           ENDCASE                 ; End of default case
  4381.  ->           ENDSWITCH             ; End of SWITCH domain
  4382.  
  4383.          Statements between a SWITCH and an ENDSWITCH which are not
  4384.          themselves within a CASE/ENDCASE or DEFAULT/ENDCASE are ignored.
  4385.          SWITCH domains may be nested with IF domains, GOSUBs, DO, FOR
  4386.          and WHILE up to a maximum stack depth of 20.
  4387.  
  4388.          Note:  either a string OR a numeric variable may be used with
  4389.          the SWITCH statement.  Strings and numerics may be mixed in any
  4390.          (useful) manner with SWITCH and CASEs.
  4391.  
  4392.          Substring bounds are not allowed on the SWITCH variable, but are
  4393.          allowed on the CASE variable.
  4394.  
  4395.  
  4396.  
  4397.  
  4398.  
  4399. Version 2.9: 921203
  4400.  
  4401. COM-AND: IBM PC Communications Script Language                 Page  77
  4402.  
  4403.  
  4404. V.    Script Language Commands (continued)
  4405.  
  4406.  
  4407.     Sx = <expression>
  4408.  
  4409.          String expressions may be computed and assigned directly with
  4410.          the syntax "Sx = <expression>".  <Expression> is any legitimate
  4411.          combination of values and operators.  For example:
  4412.  
  4413.          S0 = S1 & S2 * S3(4:5)
  4414.          S0(70:79) = S1
  4415.  
  4416.          Values may be literal or string/numeric variables.  Operators
  4417.          allowed are "*" (concatenate at end), and "&" (trim trailing
  4418.          blanks and then concatenate).  Substrings may be specified using
  4419.          (from:to) notation:  from column # to column #.
  4420.  
  4421.          Numeric variables may also be included.  An implicit conversion
  4422.          to ASCII is performed (with lead zeroes suppressed and left
  4423.          justified).  The width of the value is variable.
  4424.  
  4425.          This usage, string expression, is the only statement in the
  4426.          COM-AND script language supporting 'string deposit'...  i.e.
  4427.          specification of a substring for assignment.  I hope that a
  4428.          future extension of this script language will allow string
  4429.          deposit as freely as string extraction.
  4430.  
  4431.          String variables may also be 'indexed'.  For example, S0[1] is
  4432.          S1, S1[1] is S2, and so on.  Arithmetic expressions are allowed
  4433.          as indices.  Indices may be used on either side of a store (e.g.
  4434.          "S0[N1] = S2[N3]").  An index does not 'wrap' (i.e.  S0[-1] is
  4435.          S0, not S29).  For example:
  4436.  
  4437.          S0 = S0[2](2:3) ; Extract cols 2-3 from S2 and place in S0
  4438.  
  4439.          A string variable can use itself as an argument on the right
  4440.          side. So, s8 = "Add to front " * s8 * " and to back" works...
  4441.  
  4442.  ->    TERMINAL
  4443.  
  4444.          The TERMINAL statement terminates a COM-AND script, returning to
  4445.          CRT mode.    It may be coded at any level (for example within a
  4446.          subroutine reached through a call from a subroutine).  Example:
  4447.  
  4448.  ->         TERMINAL             ; End of script
  4449.          ; Nothing past this point in the script is executed
  4450.  
  4451.          Note also the EXIT and CONNECT command.
  4452.  
  4453.  
  4454. Version 2.9: 921203
  4455.  
  4456. COM-AND: IBM PC Communications Script Language                 Page  78
  4457.  
  4458.  
  4459. V.    Script Language Commands (continued)
  4460.  
  4461.  
  4462.  ->    TIME Sx [0!1]
  4463.  
  4464.          The TIME statement store the current system time into the target
  4465.          variable.    The TIME is formatted according to the optional
  4466.          format argument (if provided and nonzero, the time is formatted
  4467.          hh:mm:ss where hh is 0-23; otherwise it is formatted hh:mm:ss
  4468.          with a final AM or PM).  Example:
  4469.  
  4470.  ->         TIME S1 1             ; Get the time of day military fmt
  4471.  
  4472.  ->    TRACE (ON!OFF)
  4473.  
  4474.          The TRACE statement turns on and off script file tracing.    When
  4475.          tracing is enabled, each line of the script file is displayed on
  4476.          the CRT before the statement is executed.    If logging is
  4477.          enabled, the trace display is also copied to the log.  Example:
  4478.  
  4479.  ->         TRACE ON             ; Turn on tracing
  4480.  
  4481.  ->    TRANSMIT <string>
  4482.  
  4483.          The TRANSMIT statement writes the given string to the communi-
  4484.          cations line.  TRANSMIT does not add a carriage return to the
  4485.          string; if a carriage return is required, it should be con-
  4486.          tained in the string (^M is a carriage return).  TRANSMIT back-
  4487.          scans the text to transmit and does not send trailing blanks.
  4488.          Examples:
  4489.  
  4490.  ->         TRANSMIT S0         ; Send what's in S0
  4491.  ->         TRANSMIT "text"         ; Send text without a c/r
  4492.  ->         TRANSMIT "text^M"       ; Send text with a c/r
  4493.  
  4494.          Note:  For PCPlus compatibility, a tilde (~) represents a 1/2
  4495.          second pause in the TRANSMIT string.
  4496.  
  4497.     TSINCE [(#)] Nx Ny Nz
  4498.  
  4499.          The TSINCE statement reads the time since a given timer was set
  4500.          (all timers are initialized to the time the script is loaded but
  4501.          may be changed with "SET TIMER"), in hours, minutes and seconds.
  4502.          10 timers are supported.  Example:
  4503.  
  4504.          TSINCE N0,N1,N2         ; Read time since timer 0 was set
  4505.          TSINCE (9) N0,N1,N2     ; Read time since timer 9 was set
  4506.  
  4507.  
  4508.  
  4509. Version 2.9: 921203
  4510.  
  4511. COM-AND: IBM PC Communications Script Language                 Page  79
  4512.  
  4513.  
  4514. V.    Script Language Commands (continued)
  4515.  
  4516.  
  4517.  ->    TYPE <string>
  4518.  
  4519.          The TYPE statement opens the file specified by <string> and
  4520.          displays it to the local console.    This is equivalent to the
  4521.          interactive Alt-W command of COM-AND.  Example:
  4522.  
  4523.  ->         TYPE "COM-AND.DOC"      ; Don't do this:  too big!
  4524.  
  4525.     UNTIL <condition>
  4526.  
  4527.          The UNTIL statement terminates the clause of a DO loop.  The
  4528.          specified condition is evaluated, and looping occurs if the
  4529.          evaluation is false.  Refer to DO above for an example.
  4530.  
  4531.          The <condition> executed by UNTIL has the same form as the
  4532.          condition of the 'IF' statement.
  4533.  
  4534.     UPDATE
  4535.  
  4536.          The UPDATE statement updates the .DFT file.  This is equi-
  4537.          valent to the STORE DEFAULT instruction.  Example:
  4538.  
  4539.          UPDATE             ; Store new settings
  4540.  
  4541.     UPPER Sx
  4542.  
  4543.          The UPPER statement upper cases all alphabetic characters in
  4544.          Sx. Example:
  4545.  
  4546.          UPPER S5             ; Force all upper case
  4547.  
  4548.     VERSION Nx
  4549.  
  4550.          The VERSION statement reads the current version of COM-AND
  4551.          (major*10+minor) and places it into a numeric variable.
  4552.          Example:
  4553.  
  4554.          VERSION N0          ; N0 = 23 if version 2.3
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.  
  4562.  
  4563.  
  4564. Version 2.9: 921203
  4565.  
  4566. COM-AND: IBM PC Communications Script Language                 Page  80
  4567.  
  4568.  
  4569. V.    Script Language Commands (continued)
  4570.  
  4571.  
  4572.  ->    WAITFOR <string> [<number>]
  4573.  
  4574.          The WAITFOR instruction waits up to a given (explicit in <num-
  4575.          ber>, or default) number of seconds for receipt of the target
  4576.          string.  The WAITFOR instruction sets the WAITFOR condition
  4577.          (tested by IF) according to whether or not the target <string>
  4578.          was received.  The WAITFOR function is not case sensitive.
  4579.          Example:
  4580.  
  4581.  ->         WAITFOR "U#="           ; Waitfor GEnie user # prompt
  4582.  
  4583.          Note:  As with WHEN strings, carriage returns, line feeds,
  4584.          and backspaces should not be encoded in the WAITFOR target.
  4585.          A special provision has been made for the construct:
  4586.  
  4587.  ->         WAITFOR "^M"            ; Waitfor the next carriage return
  4588.  
  4589.          This construction is required because of the frequency with
  4590.          which published scripts use the construct.  However, in the
  4591.          general case, avoid carriage returns, line feeds and backspaces
  4592.          in the WAITFOR string.
  4593.  
  4594.     WCLOSE [ALL]             ; Optional operand -> close all open
  4595.  
  4596.          The WCLOSE instruction closes a window opened with the WOPEN
  4597.          instruction.  If no windows are open FAILURE is set.  Otherwise,
  4598.          (1) The saved area (if one is saved) is restored and (2) The
  4599.          ON ESCAPE condition at the time of the WOPEN is restored.
  4600.          For example:
  4601.  
  4602.          WCLOSE             ; Must match a WOPEN above
  4603.  
  4604.  
  4605.  
  4606.  
  4607.  
  4608.  
  4609.  
  4610.  
  4611.  
  4612.  
  4613.  
  4614.  
  4615.  
  4616.  
  4617.  
  4618.  
  4619. Version 2.9: 921203
  4620.  
  4621. COM-AND: IBM PC Communications Script Language                 Page  81
  4622.  
  4623.  
  4624. V.    Script Language Commands (continued)
  4625.  
  4626.  
  4627.  ->    WHEN [(#)] <string> <string>
  4628.  
  4629.          The WHEN instruction establishes a 'trigger' string which will
  4630.          be recognized and responded to automatically.  WHEN takes two
  4631.          arguments:  the first argument is a <string> which, on receipt,
  4632.          results in the transmission of the second string.    Example:
  4633.  
  4634.  ->         WHEN "Press return for more" "^M" ; Respond w/c/r
  4635.  
  4636.          The WHEN statement has been extended to allow up to 10 WHEN
  4637.          settings (WHEN (0), WHEN (1) ...  WHEN (9), with an unquali-
  4638.          fied WHEN equivalent to WHEN (0)).  Each must be set and
  4639.          cleared individually.  Examples:
  4640.  
  4641.          WHEN (0) "more?" "^M"   ; Same as WHEN
  4642.          WHEN (9) "Agree?" "Y^M" ; Set last WHEN
  4643.  
  4644.          WHEN trigger strings are not case sensitive;  you needn't
  4645.          represent the trigger exactly.  The WHEN matching begins after
  4646.          receipt of a carriage return, and continues until the length
  4647.          buffered exceeds the length of the WHEN string.
  4648.  
  4649.          Note:  The SET ANYWHEN statement affects the type of match
  4650.          performed by the WHEN statement.  When ANYWHEN is off (the
  4651.          default), a match must be made from the start a received line
  4652.          (i.e.  immediately after the return).  When ANYWHEN is on, the
  4653.          match is a substring test against the entire received buffer.
  4654.  
  4655.          If WHEN triggers are used during an RGET, the length of the
  4656.          RGET target must be larger than the largest WHEN trigger
  4657.          string.  Further, if a WHEN trigger is encountered during an
  4658.          RGET, all text up to and including the WHEN trigger is 'elim-
  4659.          inated' (i.e.  not returned by RGET).
  4660.  
  4661.          Carriage returns and line feeds cannot be included in a WHEN
  4662.          trigger string.
  4663.  
  4664.          WHEN settings are cleared with the CWHEN statement.
  4665.  
  4666.  
  4667.  
  4668.  
  4669.  
  4670.  
  4671.  
  4672.  
  4673.  
  4674. Version 2.9: 921203
  4675.  
  4676. COM-AND: IBM PC Communications Script Language                 Page  82
  4677.  
  4678.  
  4679. V.    Script Language Commands (continued)
  4680.  
  4681.  
  4682.     WHILE <condition>
  4683.  
  4684.          The WHILE statement asserts the beginning of a loop, if the
  4685.          condition specified evaluates true.  The clause after the WHILE
  4686.          statement is executed through an ENDWHILE statement and looping
  4687.          occurs (back to evaluate the condition again).
  4688.  
  4689.          The WHILE statement evaluates the given condition (see the 'IF'
  4690.          statement for a list of conditions).  If the evaluation is
  4691.          false, statements following are skipped until the corresponding
  4692.          ENDWHILE is encountered.  Example:
  4693.  
  4694.          N0 = 0             ; Initialize index
  4695.          WHILE LT N0 10         ; Loop for 10 times
  4696.          N0 = N0+1         ; Increment index
  4697.          ...
  4698.          ENDWHILE         ; Loop back to WHILE
  4699.  
  4700.  
  4701.          Note: (1) GOTO statements may never enter a WHILE loop;  not
  4702.                even to leave an inner loop to return to an outer
  4703.                loop.
  4704.  
  4705.          Note: (2) WHILE statements may be nested (along with IF, FOR,
  4706.                WHILE, SWITCH and DO loops) up to 20 levels.  How-
  4707.                ever, they may not overlap other WHILE loops, or
  4708.                other flow-of-control statements.
  4709.  
  4710.          Note: (3) The clause of the WHILE statement (statements after
  4711.                'WHILE' down to the ENDWHILE statement) is not
  4712.                necessarily executed, even once.  The conditional
  4713.                evaluation is performed before each iteration.
  4714.  
  4715.  
  4716.  
  4717.  
  4718.  
  4719.  
  4720.  
  4721.  
  4722.  
  4723.  
  4724.  
  4725.  
  4726.  
  4727.  
  4728.  
  4729. Version 2.9: 921203
  4730.  
  4731. COM-AND: IBM PC Communications Script Language                 Page  83
  4732.  
  4733.  
  4734. V.    Script Language Commands (continued)
  4735.  
  4736.  
  4737.     WOPEN row col row col attr [label]
  4738.  
  4739.          The WOPEN command opens a window on the screen, saving the
  4740.          current ON ESCAPE setting, and optionally, setting a new ON
  4741.          ESCAPE condition.    Up to 10 windows may be opened at one time
  4742.          (if 10 is exceeded, FAILURE is set).
  4743.  
  4744.          The WOPEN instruction combines a number of other instructions
  4745.          into a one function.  WOPEN is equivalent to:
  4746.  
  4747.              Sx = "_ONESCAPE"                ; Read current
  4748.              ON ESCAPE GOSUB label         ; Set new
  4749.              CURSOR Nx Ny             ; Read current & save
  4750.              SAVE row col row col         ; Save screen area
  4751.  ->             BOX  row col row col attr         ; Clear scr, draw box
  4752.  
  4753.          The corresponding WCLOSE is equivalent to:
  4754.  
  4755.              ON ESCAPE GOSUB Sx          ; Reset condition
  4756.              RESTORE                 ; Restore screen
  4757.  ->             LOCATE Nx Ny             ; Restore cursor
  4758.  
  4759.          The ON ESCAPE condition is reset upon WCLOSE to the setting at
  4760.          the time of the WOPEN.  Intervening "ON ESCAPE" statements are
  4761.          therefore cancelled.  Intervening SAVEs and RESTOREs are not
  4762.          cancelled, however.  Have care!
  4763.  
  4764.          Example:
  4765.  
  4766.          WOPEN 10,10 20,70 (default) ESCAPE_Label ; Open a window
  4767.  
  4768.          NOTE: If the ERROR flag is set after WOPEN, there was insuf-
  4769.          ficient space to save the screen under the window.  WCLOSE will
  4770.          not be able to restore the previous screen's contents, but
  4771.          will otherwise work correctly..
  4772.  
  4773.          COM-AND provides space to save approximately 5 screens of 24
  4774.          lines of 80 column text.  More than 5 WOPENs are allowed when
  4775.          the area under each is smaller than 24*80.
  4776.  
  4777.  
  4778.  
  4779.  
  4780.  
  4781.  
  4782.  
  4783.  
  4784. Version 2.9: 921203
  4785.  
  4786. COM-AND: IBM PC Communications Script Language                 Page  84
  4787.  
  4788.  
  4789. V.    Script Language Commands (continued)
  4790.  
  4791.  
  4792.     WRITE Sx [Nx]
  4793.  
  4794.          The WRITE command writes a string from a string variable to the
  4795.          output file.  The length of the string variable is specified by
  4796.          Nx.  The output file must be opened by a previous FOPENO.
  4797.  
  4798.          In TEXT mode the WRITE command translates CRs in the string
  4799.          buffer to CR/LF pairs.  No tab compression is performed.
  4800.  
  4801.          WRITE writes up to 80 characters from Sx, according to the value
  4802.          in Nx.  Example:
  4803.  
  4804.          WRITE S0 75         ; Write 75 bytes
  4805.  
  4806.          Note:  the length given applies to the string as given.  The
  4807.          string "^M" is 2 characters long and should be specified as a
  4808.          length of 2, although only 1 character (control-M) is written.
  4809.          The string "`"", interestingly enough, is 1 character long!
  4810.  
  4811.          Note:  the length parameter is optional.  If not specified, the
  4812.          current length of the variable is computed.
  4813.  
  4814.          Note:  COM-AND does not write a ^Z (decimal 26) to the output
  4815.          file when it is closed, having been opened in TEXT mode.  The
  4816.          script author may add the ASCII EOF convention by preceding the
  4817.          FCLOSEO with the statement:
  4818.  
  4819.          WRITE "^Z"              ; ASCII EOF convention
  4820.  
  4821.          Note also: FPUTC/FPUTS/FWRITE commands.
  4822.  
  4823.  
  4824.  
  4825.  
  4826.  
  4827.  
  4828.  
  4829.  
  4830.  
  4831.  
  4832.  
  4833.  
  4834.  
  4835.  
  4836.  
  4837.  
  4838.  
  4839. Version 2.9: 921203
  4840.  
  4841. COM-AND: IBM PC Communications Script Language                 Page  85
  4842.  
  4843.  
  4844. VI.    SET commands
  4845.  
  4846.  
  4847.     SET subcommands allow string variables for their operands.  For
  4848.     example, ON or OFF may be contained in a string, and the string
  4849.     used as the final operand of the statement.
  4850.  
  4851.  
  4852.     A. Basic set
  4853.  
  4854.        SET 25
  4855.  
  4856.         SET 25 changes to CGA mode (25 lines), for CGA/Monochrome.
  4857.         NOTE: SET 25 clears any DWINDOW in effect.
  4858.  
  4859.        SET 43
  4860.  
  4861.         SET 43 changes to EGA(VGA) mode (43(50) lines), if an EGA
  4862.         is available.  [SET 43 sets VGA (50 lines), if VGA is
  4863.         available.]  NOTE:  SET 43 clears any DWINDOW in effect.
  4864.  
  4865.        SET ACCESSORY NAME # <string>
  4866.        SET ACCESSORY SUBD # <string>
  4867.        SET ACCESSORY PGM  # <string>
  4868.        SET ACCESSORY SCRI # <string>
  4869.  
  4870.            SET ACCE <field> stores the given string into the stated
  4871.            field (name, subdir, ...).  Each field is differently sized.
  4872.            Accessory directory entry numbers range from 1-50.
  4873.  
  4874.        SET ADVERT (ON!OFF)
  4875.  
  4876.         SET ADVERT sets and resets the initial advertisement display.
  4877.  
  4878.  ->       SET ALARM (ON!OFF)
  4879.  
  4880.         SET ALARM sets and resets the alarm function.  When OFF,
  4881.         the alarm does not sound (e.g. after download), but a delay,
  4882.         for a period set through Alt-S or SET ATIME, is performed.
  4883.  
  4884.        SET ANYWHEN (ON!OFF)
  4885.  
  4886.         SET ANYWHEN controls the execution of any current WHEN condi-
  4887.         tions.    When ANYWHEN is off (the default), matching occurs
  4888.         from the beginning of the buffer.  When ANYWHEN is on, the
  4889.         match is actually a substring match to the received buffer.
  4890.  
  4891.  
  4892.  
  4893.  
  4894. Version 2.9: 921203
  4895.  
  4896. COM-AND: IBM PC Communications Script Language                 Page  86
  4897.  
  4898.  
  4899. VI.    SET Commands (continued)
  4900.  
  4901.  
  4902.     A. Basic set (continued)
  4903.  
  4904.  ->       SET ASCII <subcommand>
  4905.  
  4906.         The SET ASCII subcommands are discussed below (section "B").
  4907.  
  4908.  ->       SET ATIME <number>         Alarm time
  4909.  
  4910.         SET ATIME sets the duration (in seconds) for alarms.
  4911.  
  4912.  ->       SET BACKSPACE IN (NONDESTRUC!DESTRUC)
  4913.  
  4914.         SET BACKSPACE IN controls the function performed when a
  4915.         backspace is received.    Nondestructive backspaces are not
  4916.         common, but may be needed occasionally.
  4917.  
  4918.  ->       SET BACKSPACE OUT (BACKSPACE!DELETE)
  4919.  
  4920.         SET BACKSPACE OUT controls the function performed when a
  4921.         backspace is typed.  Either a 'backspace' character (0x8)
  4922.         or a delete character (0x7f) may be transmitted.
  4923.  
  4924.        SET BAR <attr>
  4925.  
  4926.         SET BAR sets the status line bar color.  The change takes
  4927.         effect the next time the status line is updated (e.g. with
  4928.         the LEGEND command).  The new color holds after the script.
  4929.  
  4930.  ->       SET BAUDRATE (300!1200!2400!4800!9600!14K!19K!38K!57K!115K)
  4931.  
  4932.         SET BAUD sets the communications port linespeed.  This
  4933.         command results in a reset of the line.  [NOTE: You may
  4934.         also use the speed returned by COMPARMS, in a variable,
  4935.         as an operand to SET BAUD.]
  4936.  
  4937.        SET BELL <number>
  4938.  
  4939.         SET BELL sets the bell tone in hertz.
  4940.  
  4941.        SET BKSCREEN <number>
  4942.  
  4943.         SET BELL sets backscreen size in pages (0-64).    Note that
  4944.         this function clears the current backscreen in the process.
  4945.  
  4946.  
  4947.  
  4948.  
  4949. Version 2.9: 921203
  4950.  
  4951. COM-AND: IBM PC Communications Script Language                 Page  87
  4952.  
  4953.  
  4954. VI.    SET Commands (continued)
  4955.  
  4956.  
  4957.     A. Basic set (continued)
  4958.  
  4959.        SET BPLUS <subcommand>
  4960.  
  4961.         The SET BPLUS subcommands are discussed below ("C").
  4962.  
  4963.  ->       SET BREAK <number>
  4964.  
  4965.         SET BREAK sets the duration (in milliseconds) of the break
  4966.         signal (BREAK statement or Ctrl-end).
  4967.  
  4968.        SET BSUPPRESS (ON!OFF)
  4969.  
  4970.         SET BSUPPRESS sets and resets blank line suppression as
  4971.         implemented in COM-AND.
  4972.  
  4973.        SET CALLLOG (ON!OFF)
  4974.  
  4975.         SET CALLLOG sets and resets COM-AND's call logging.  The
  4976.         calllog records DIAL (Alt-D), REDIAL (Alt-R), HANGUP
  4977.         (Alt-H), and file transfers (PgUp and PgDn).
  4978.  
  4979.        SET CDISPLAY (ON!OFF)
  4980.  
  4981.         SET CDISPLAY turns on and off control character display.
  4982.         BBS's often use control characters as graphics, and network
  4983.         host systems only generate them inadvertantly.
  4984.  
  4985.        SET CDRESPECT (ON!OFF)
  4986.  
  4987.         SET CDRESPECT sets and resets COM-AND's treatment of the
  4988.         modem carrier detect.  When CD respect is 'off', COM-AND
  4989.         treats modem carrier as always 'true'.
  4990.  
  4991.        SET CHAT (ON!OFF)
  4992.  
  4993.         SET CHAT turns on and off chat mode.  The chat window is
  4994.         opened immediately.
  4995.  
  4996.        SET CHLINES <number>
  4997.  
  4998.         SET CHLINES specifies the size of the CHAT window.
  4999.  
  5000.  
  5001.  
  5002.  
  5003.  
  5004. Version 2.9: 921203
  5005.  
  5006. COM-AND: IBM PC Communications Script Language                 Page  88
  5007.  
  5008.  
  5009. VI.    SET Commands (continued)
  5010.  
  5011.  
  5012.     A. Basic set (continued)
  5013.  
  5014.        SET CLOCK (ON!OFF!NEW)
  5015.  
  5016.         SET CLOCK turns on and off the on-screen clock.  The "NEW"
  5017.         subcommands resets the "call time" and makes an entry in
  5018.         the calllog (if calllogging).
  5019.  
  5020.        SET COLOR (ON!OFF)
  5021.  
  5022.         SET COLOR sets/reset COM-AND's use of a color monitor, if
  5023.         available.  Note that the screen is repainted accordingly.
  5024.  
  5025.        SET COMBASE <port> Nx
  5026.  
  5027.         SET COMBASE specifies the base address to use for the given
  5028.         port (COM1, COM2, etc).
  5029.  
  5030.        SET COMVECTOR <port> Nx
  5031.  
  5032.         SET COMVECTOR specifies the vector number to use for the
  5033.         given port (COM1, COM2, etc).
  5034.  
  5035.  ->       SET CR (CR!CR_LF)
  5036.  
  5037.         SET CR controls the display of received carriage returns.
  5038.         When set to CR_LF, received carriage returns are displayed
  5039.         as carriage return/line feeds.
  5040.  
  5041.  ->       SET CR_IN (CR!CR_LF)
  5042.  
  5043.         SET CR_IN is equivalent to SET CR above.
  5044.  
  5045.  ->       SET DATABITS (7!8)
  5046.  
  5047.         SET DATA sets the communications port to 7 or 8 data bits
  5048.         (this does not affect W/XMODEM, YMODEM, or ZMODEM transfers).
  5049.  
  5050.        SET DBLCLICK #
  5051.  
  5052.         SET DBLCLICK specifies the interval (in MS) during which a
  5053.         double click of the mouse button may occur.
  5054.  
  5055.  
  5056.  
  5057.  
  5058.  
  5059. Version 2.9: 921203
  5060.  
  5061. COM-AND: IBM PC Communications Script Language                 Page  89
  5062.  
  5063.  
  5064. VI.    SET Commands (continued)
  5065.  
  5066.  
  5067.     A. Basic set (continued)
  5068.  
  5069.        SET DDACODE <string>
  5070.  
  5071.         SET DDACODE establishes a 3 digit area code for use by
  5072.         Alt-D (and scripted DIAL).  When a legitimate non-null
  5073.         value, this area code is stripped (along with a prefixed
  5074.         "1") from a number to be dialed.
  5075.  
  5076.        SET DDPREFIX <string>
  5077.  
  5078.         SET DDPREFIX establishes a string (or null) to precede a
  5079.         number (and LD prefix if used) in Alt-D and script DIAL.
  5080.  
  5081.        SET DEFAULT <attr>
  5082.  
  5083.         SET DEFA sets the color for menu windows.  The change takes
  5084.         effect the next time a window is invoked (e.g. with an alt'd
  5085.         key).  The new color holds after the script terminates.
  5086.  
  5087.        SET DIAL NAME # <string>        SET DIAL DATA # <string>
  5088.        SET DIAL NUMB # <string>        SET DIAL STOP # <string>
  5089.        SET DIAL RATE # <string>        SET DIAL ECHO # <string>
  5090.        SET DIAL PARI # <string>        SET DIAL SCRI # <string>
  5091.  
  5092.            SET DIAL <field> stores the given string into the stated
  5093.            field (name, number, ...).  Each field is differently sized.
  5094.            Dialing directory entry numbers range from 1-100.
  5095.  
  5096.  ->       SET DISPLAY (ON!OFF)
  5097.  
  5098.         SET DISPLAY sets and resets the display of received charac-
  5099.         ters.  You may use this to suppress (OFF) received text
  5100.         while you wait for an appropriate response.
  5101.  
  5102.         This statement is equivalent to SET RDISPLAY.
  5103.  
  5104.  ->       SET DLDIR <string>
  5105.  
  5106.         SET DLDIR establishes a default path for downloaded files
  5107.         when the file name given is not pathed.
  5108.  
  5109.         The <string> provided may be of the form: d:\path...\path
  5110.         The <string> operand is limited to 26 characters.
  5111.  
  5112.  
  5113.  
  5114. Version 2.9: 921203
  5115.  
  5116. COM-AND: IBM PC Communications Script Language                 Page  90
  5117.  
  5118.  
  5119. VI.    SET Commands (continued)
  5120.  
  5121.  
  5122.     A. Basic set (continued)
  5123.  
  5124.        SET DOSLEVEL <number>
  5125.  
  5126.         SET DOSLEVEL establishes an error level (default 0) to
  5127.         return to the invoking program when COM-AND terminates.
  5128.         Among other uses, this provides a means to exit COM-AND
  5129.         but retain control of processing (via a batch file).
  5130.  
  5131.        SET DPREFIX <string>
  5132.  
  5133.         SET DPREFIX specifies the prefix used to build a dialing
  5134.         command.
  5135.  
  5136.        SET DROPDTR (ON!OFF)
  5137.  
  5138.         SET DROPDTR specifies method used (issue modem escape+hangup
  5139.         string, or drop DTR) to hangup.
  5140.  
  5141.        SET DSUFFIX <string>
  5142.  
  5143.         SET DSUFFIX specifies the suffix used to build a dialing
  5144.         command.
  5145.  
  5146.        SET DTR (ON!OFF)
  5147.  
  5148.         SET DTR raises and lowers the DTR signal to the modem.
  5149.  
  5150.  ->       SET DUPLEX (HALF!FULL)
  5151.  
  5152.         SET DUPLEX turns on (HALF) and off (FULL) local echo.
  5153.  
  5154.  ->       SET ENQ (OFF!CISB)
  5155.  
  5156.         SET ENQ CISB allows automatic file transfers initiated by
  5157.         CIS.  SET ENQ OFF ignores ENQ characters.
  5158.  
  5159.  
  5160.  
  5161.  
  5162.  
  5163.  
  5164.  
  5165.  
  5166.  
  5167.  
  5168.  
  5169. Version 2.9: 921203
  5170.  
  5171. COM-AND: IBM PC Communications Script Language                 Page  91
  5172.  
  5173.  
  5174. VI.    SET Commands (continued)
  5175.  
  5176.  
  5177.     A. Basic set (continued)
  5178.  
  5179.        SET EXIT <script name>
  5180.  
  5181.         SET EXIT specifies a script file name to invoke upon termin-
  5182.         ation of COM-AND.  Termination occurs manually with Alt-X,
  5183.         or through the script command BYE.  When COM-AND terminates,
  5184.         and an EXIT script has been set, the exit script is invoked,
  5185.         after testing for carrier.  When an EXIT script is set, the
  5186.         only way to terminate COM-AND is through the script itself
  5187.         (i.e.  no EXIT script is specified in the EXIT script, and
  5188.         the EXIT script performs a BYE command).
  5189.  
  5190.         Note:  the EXIT script setting is cleared when an exit
  5191.         script is invoked...  i.e.  an EXIT script must re-specify
  5192.         an EXIT script name to preserve the function (and COM-AND
  5193.         not to terminate).
  5194.  
  5195.         Note:  COM-AND must be ABLE to find the EXIT script on
  5196.         termination.  It is best if all EXIT scripts reside in the
  5197.         subdirectory pointed to through the COM-AND= environment
  5198.         variable.
  5199.  
  5200.        SET EXQUERY (ON!OFF)
  5201.  
  5202.         SET EXQUERY sets/resets the "do you mean it?" query-on-exit.
  5203.  
  5204.        SET FAILURE (ON!OFF)
  5205.  
  5206.         SET FAILURE sets and resets the FAILURE condition tested by
  5207.         the IF statement.  SET FAILURE may be used to modify various
  5208.         conditions setting and resetting SUCCESS/FAILURE.
  5209.  
  5210.        SET FATTR <file> Nx
  5211.  
  5212.         SET FATTR writes a file's attribute bits, from the low 8
  5213.         bits of Nx.  Please note that the FATTR statement (which
  5214.         reads a file's attributes) may return EITHER a string, or
  5215.         a numeric value, and the string form is incompatible with
  5216.         SET FATTR.  Please refer to the FATTR statement above.
  5217.  
  5218.        SET FLAG [(#)] (ON!OFF)
  5219.  
  5220.         The SET FLAG instruction sets and resets one of 10 flags.
  5221.         Flags may be tested with the IF statement.
  5222.  
  5223.  
  5224. Version 2.9: 921203
  5225.  
  5226. COM-AND: IBM PC Communications Script Language                 Page  92
  5227.  
  5228.  
  5229. VI.    SET Commands (continued)
  5230.  
  5231.  
  5232.     A. Basic set (continued)
  5233.  
  5234.  ->       SET FLOWCTRL (ON!OFF)
  5235.  
  5236.         SET FLOWCTRL turns on and off software flow control used
  5237.         during receipt of text from the host.  This command is global
  5238.         (SET ASCII FLOW is local to ASCII SENDs), affecting both
  5239.         display receipt and ASCII sends.
  5240.  
  5241.        SET FOUND (ON!OFF)
  5242.  
  5243.         SET FOUND sets and resets the FOUND condition tested by
  5244.         the IF statement.  SET FOUND may be used to imitate FIND
  5245.         statement returns.
  5246.  
  5247.  ->       SET HARDFLOW (ON!OFF)
  5248.  
  5249.         SET HARD enables and disables unidirectional hardware flow
  5250.         control.  Flow control is performed at the hardware level by
  5251.         raising RTS and waiting (for up to 20 seconds) for CTS.  Note
  5252.         HARDFLOW is overridden by RTSFLOW (below).  HARDFLOW is
  5253.         rarely used today.
  5254.  
  5255.        SET HMOUSE #
  5256.  
  5257.         SET HMOUSE specifies the mouse horizontal sensitivity.
  5258.  
  5259.        SET INAFTER (ON!OFF)
  5260.  
  5261.         SET INAFTER controls modem initialization after hangup.
  5262.  
  5263.        SET INTRINSIC (ON!OFF)
  5264.  
  5265.         SET INTRINSIC enables (ON) and disables (OFF) COM-AND's
  5266.         handling of strings (potentially) containing intrinsic
  5267.         functions.  When disabled, strings containing intrinsic
  5268.         functions are NOT executed ("_MOUSE" remains unchanged).
  5269.  
  5270.        SET KBDBUFFER (ON!OFF)
  5271.  
  5272.         SET KBDBUF controls the (status line) keyboard display
  5273.         buffer.
  5274.  
  5275.  
  5276.  
  5277.  
  5278.  
  5279. Version 2.9: 921203
  5280.  
  5281. COM-AND: IBM PC Communications Script Language                 Page  93
  5282.  
  5283.  
  5284. VI.    SET Commands (continued)
  5285.  
  5286.  
  5287.     A. Basic set (continued)
  5288.  
  5289.  ->       SET KERMIT <subcommand>
  5290.  
  5291.         The SET KERMIT subcommands are discussed below ("D").
  5292.  
  5293.        SET LD # <string>
  5294.  
  5295.            SET LD stores the given string into the given LD directory
  5296.            entry:  1,2,3, or 4 is required, 1="+",2="-",3="#",4="@" in
  5297.            the Alt-D LD directory.
  5298.  
  5299.        SET LINKED (ON!OFF)
  5300.  
  5301.         SET LINKED sets and resets the LINKED condition tested by
  5302.         the IF statement.  SET LINKED may be used to imitate script
  5303.         execution through Alt-D.
  5304.  
  5305.        SET MACRO # <string>
  5306.  
  5307.            SET MACRO stores the given string into the given MACRO dir-
  5308.            ectory entry:  0-9.
  5309.  
  5310.        SET MASK (ON!OFF)
  5311.  
  5312.         SET MASK sets and resets the 7 bit mask of COM-AND.
  5313.  
  5314.        SET MCONNECT <string>
  5315.  
  5316.         SET MCONNECT specifies the modem connect string used to
  5317.         recognize a successful dialing function.
  5318.  
  5319.        SET MCR <value>
  5320.  
  5321.         SET MCR write a value to the currently selected port's
  5322.         modem control register.  It is suggested this be avoided
  5323.         in most cases (danger!).
  5324.  
  5325.        SET MDCHAR <value>
  5326.  
  5327.         SET MDCHAR sets an alternate modem delay character used
  5328.         as 1/2 second delays in TRANSMIT and in modem strings.
  5329.         This value is retained after the script terminates.
  5330.  
  5331.  
  5332.  
  5333.  
  5334. Version 2.9: 921203
  5335.  
  5336. COM-AND: IBM PC Communications Script Language                 Page  94
  5337.  
  5338.  
  5339. VI.    SET Commands (continued)
  5340.  
  5341.  
  5342.     A. Basic set (continued)
  5343.  
  5344.        SET MDELAY #
  5345.  
  5346.         SET MDELAY specifies the intercharacter time (in MS) for
  5347.         strings issued to the modem (e.g. dialing strings).
  5348.  
  5349.  ->       SET MENUMODE (ON!OFF)
  5350.  
  5351.         SET MENUMODE specifies the new MENUMODE value.    It takes
  5352.         effect only upon completion of the script.
  5353.  
  5354.        SET MESCAPE <string>
  5355.  
  5356.         SET MESCAPE specifies the string to use to get the atten-
  5357.         tion of the modem (e.g. before hangup).
  5358.  
  5359.        SET MHANGUP <string>
  5360.  
  5361.         SET MHANGUP specifies the string used (if DROPDTR is OFF)
  5362.         to hangup the phone.
  5363.  
  5364.        SET MINIT <string>
  5365.  
  5366.         SET MINIT specifies the string transmitted to the modem
  5367.         when COM-AND is loaded.
  5368.  
  5369.        SET MULTI (ON!OFF)
  5370.  
  5371.         SET MULTI controls the action of subsequent PLAY statements.
  5372.         MULTI is OFF by default; tempo, mode, etc are defaulted for
  5373.         every statement.  When MULTI is ON, no defaults are used,
  5374.         and tempo, mode, etc hold across PLAY statements.
  5375.  
  5376.        SET MUSIC (ON!OFF)
  5377.  
  5378.         SET MUSIC sets and resets COM-AND's processing of music
  5379.         escape sequences.  Music escape sequences are received:
  5380.         "ESC [ M <string> <control-N>'.
  5381.  
  5382.        SET OVENTRY NONE!<address>)
  5383.  
  5384.         SET OVEN establishes the address (or none) to execute when
  5385.         the current overlay is terminated (e.g.  when a new overlay
  5386.         is loaded, or on Alt-X).
  5387.  
  5388.  
  5389. Version 2.9: 921203
  5390.  
  5391. COM-AND: IBM PC Communications Script Language                 Page  95
  5392.  
  5393.  
  5394. VI.    SET Commands (continued)
  5395.  
  5396.  
  5397.     A. Basic set (continued)
  5398.  
  5399.  ->       SET PARITY (EVEN!ODD!NONE)
  5400.  
  5401.         SET PARITY sets the communications line parity for the
  5402.         current port.
  5403.  
  5404.        SET PCJR (ON!OFF)
  5405.  
  5406.         SET PCJr sets and resets a mode where the comm line is sus-
  5407.         pended during disk I/O.  This only effects transcripts,
  5408.         ZMODEM, CIS-B+, Windowed XMODEM and Windowed Kermit.
  5409.  
  5410.  ->       SET PORT (COM1!COM2!COM3!COM4)
  5411.  
  5412.         SET PORT declares the communications port to use.  This
  5413.         command resets the communications line.
  5414.  
  5415.        SET QUIET (ON!OFF)
  5416.  
  5417.         SET QUIET controls bell character suppression.
  5418.  
  5419.  ->       SET RDELAY <number>
  5420.  
  5421.         SET RDELAY sets the duration (in seconds) of the delay
  5422.         between Alt-R and script DIAL statement redial attempts.
  5423.  
  5424.        SET RDISPLAY (ON!OFF)
  5425.  
  5426.         SET RDISPLAY sets and resets the display of received text.
  5427.         You may use this to suppress (OFF) received text while you
  5428.         wait for an appropriate response.
  5429.  
  5430.        SET RDMAX <number>
  5431.  
  5432.         A script author may set a limit to the number of redials per-
  5433.         formed through a DIAL statement.  This feature is available
  5434.         only in the script setting it (at this time).
  5435.  
  5436.        SET RECHO (ON!OFF)
  5437.  
  5438.         SET RECHO sets and resets the echo of received characters
  5439.         back out the port.  This might be enabled (ON), for example,
  5440.         in a script performing a 'HOST' mode for outside callers.
  5441.  
  5442.  
  5443.  
  5444. Version 2.9: 921203
  5445.  
  5446. COM-AND: IBM PC Communications Script Language                 Page  96
  5447.  
  5448.  
  5449. VI.    SET Commands (continued)
  5450.  
  5451.  
  5452.     A. Basic set (continued)
  5453.  
  5454.        SET REMAP (ON!OFF)
  5455.  
  5456.         SET REMAP enables (on) and disables (off) keyboard remapping.
  5457.         A remap must first be created and placed into a file COM-AND
  5458.         .RMP (for example using the supplied REMAP.CMD script).
  5459.  
  5460.  ->       SET REMOTE (ON!OFF)
  5461.  
  5462.         SET REMOTE enables (on) and disables (off) the ability to
  5463.         execute script functions through received commands.  REMOTE
  5464.         commands are received: "ESC,^,<script command> <cr>".
  5465.  
  5466.        SET REMFTNS (ON!OFF)
  5467.  
  5468.         SET REMFTN enables (on) and disables (off) transmission of
  5469.         function key values to a remote Doorway-like utility.  When
  5470.         this is ON, function key pop-ups in COM-AND are inhibited.
  5471.  
  5472.        SET RLEOK (ON!OFF)
  5473.  
  5474.         SET RLEOK sets and resets the possibility of RLE display
  5475.         during normal receive functions.
  5476.  
  5477.        SET RMODE (ASCII!BINARY)
  5478.  
  5479.         SET RMODE affects the RGET command subsequent.    By default,
  5480.         the RMODE setting is ASCII.  When set to ASCII, RGETs ignore
  5481.         nulls and line feeds, end on a carriage return (or length),
  5482.         and backspace/rubouts are implemented (and not buffered).
  5483.         When the mode is binary, nulls, carriage returns, line feeds,
  5484.         backspaces and rubouts are buffered to the length specified.
  5485.  
  5486.        SET RTS (ON!OFF)
  5487.  
  5488.         SET RTS sets and resets request-to-send bit of the modem.
  5489.         Generally, this capability should be avoided.
  5490.  
  5491.        SET RTSD (ON!OFF)
  5492.  
  5493.         SET RTSD enables (on) and disables (off) RTS Discipline
  5494.         in COM-AND.  When enabled, RTS is not raised by COM-AND and
  5495.         must be raised through SET RTS (above).
  5496.  
  5497.  
  5498.  
  5499. Version 2.9: 921203
  5500.  
  5501. COM-AND: IBM PC Communications Script Language                 Page  97
  5502.  
  5503.  
  5504. VI.    SET Commands (continued)
  5505.  
  5506.  
  5507.     A. Basic set (continued)
  5508.  
  5509.        SET RTSF (ON!OFF)
  5510.  
  5511.         SET RTSF enables (on) and disables (off) bidirectional flow
  5512.         control.  When this flow control is enabled, the RTS line is
  5513.         used to signal the modem when COM-AND is able (or not able)
  5514.         to receive characters.    This method of flow control is re-
  5515.         quired by 9600 bps (and above) modems.    Refer to Appendix J
  5516.         for more discussion of flow control.
  5517.  
  5518.        SET SILENCE <seconds>
  5519.  
  5520.         SET SILENCE sets and resets the timeout used by ON SILENCE
  5521.         GOSUB.    The trap defaults to 300 seconds.  SET SILENCE
  5522.         changes only the timeout, not the trap clock.
  5523.  
  5524.        SET SLOWOUT (ON!OFF)
  5525.  
  5526.         SET SLOWOUT sets and resets 'slow output' during file trans-
  5527.         fers.  COM-AND usually performs transfers at machine speed
  5528.         (interrupt driven writes);  Some network modems, and some
  5529.         high speed modems cannot take this speed.
  5530.  
  5531.  ->       SET SOFTFLOW (ON!OFF)
  5532.  
  5533.         SET SOFTFLOW sets and resets software flow control (XON/XOFF)
  5534.         as used in receive and ASCII SEND.
  5535.  
  5536.        SET STATUS (ON!OFF)
  5537.  
  5538.         SET STATUS enables and disables the status line display.
  5539.         When OFF, the last line is used for received text display.
  5540.  
  5541.  ->       SET STOPBITS (1!2)
  5542.  
  5543.         SET STOP sets the communications port to 1 or 2 stop bits.
  5544.  
  5545.  ->       SET SUCCESS (ON!OFF)
  5546.  
  5547.         SET SUCCESS sets and resets the SUCCESS condition tested by
  5548.         the IF statement.  SET SUCCESS may be used to modify various
  5549.         statements that themselves set/reset SUCCESS/FAILURE.
  5550.  
  5551.  
  5552.  
  5553.  
  5554. Version 2.9: 921203
  5555.  
  5556. COM-AND: IBM PC Communications Script Language                 Page  98
  5557.  
  5558.  
  5559. VI.    SET Commands (continued)
  5560.  
  5561.  
  5562.     A. Basic set (continued)
  5563.  
  5564.  ->       SET SWRITE (BIOS!DIRECT!DOS)
  5565.  
  5566.         SET SWRITE sets COM-AND to use either BIOS, DOS, or direct
  5567.         screen buffer access for menu saves/restores.
  5568.  
  5569.         SET SWRITE DOS only controls text written to the screen.
  5570.         When used, text received is passed to the console device.
  5571.  
  5572.         SET SWRITE BIOS affects both text written to the screen
  5573.         and the method used for screen saves.
  5574.  
  5575.        SET TEXT <attr>
  5576.  
  5577.         SET TEXT sets the color for text display.  The change takes
  5578.         effect the next time a character is displayed (it does not
  5579.         repaint).  The new color holds after the script terminates.
  5580.  
  5581.         NOTE: To change the color attribute for the entire screen:
  5582.  
  5583.               SET TEXT <attr>    ; Set text attr for subsequent chars
  5584.               SET COLOR "_TEXT" ; Repaint screen and border
  5585.  
  5586.        SET TIMER [(#)]
  5587.  
  5588.         The SET TIMER instruction sets the timestamp for one of 10
  5589.         timers.  Timers are read using the TSINCE statement.
  5590.  
  5591.        SET TTHRU (ON!OFF)
  5592.  
  5593.         The SET TTHRU sets the script processor to allow (ON) or not
  5594.         allow (OFF) typethrough during the script.  When set OFF,
  5595.         keystrokes are queued and are read by KEYGET, ATGET, MATGET,
  5596.         GET and MGET.
  5597.  
  5598.         Note:  TYPETHRU is a 'global' condition, whereas HITKEY is a
  5599.         'local' condition.  Typethrough is suspended after HITKEY is
  5600.         tested, until the key is read.    Once the key is read, the
  5601.         HITKEY condition is disabled and typethrough is allowed
  5602.         (unless you've SET TTHRU OFF).
  5603.  
  5604.         Note: Use of SET TTHRU may inhibit termination with ESCape!
  5605.  
  5606.  
  5607.  
  5608.  
  5609. Version 2.9: 921203
  5610.  
  5611. COM-AND: IBM PC Communications Script Language                 Page  99
  5612.  
  5613.  
  5614. VI.    SET Commands (continued)
  5615.  
  5616.  
  5617.     A. Basic set (continued)
  5618.  
  5619.        SET TUNE <string>
  5620.  
  5621.         The SET TUNE sets the alarm tune to the BASIC encoded play
  5622.         statement in <string>.    The ERROR condition is set if the
  5623.         string cannot be parsed (and the alarm is not set).  Refer
  5624.         to Appendix C for the syntax of the play statement.
  5625.  
  5626.        SET VMOUSE #
  5627.  
  5628.         SET HMOUSE specifies the mouse vertical sensitivity.
  5629.  
  5630.        SET WAITFOR (ON!OFF)
  5631.  
  5632.         SET WAITFOR sets and resets the WAITFOR condition tested
  5633.         by the IF statement.  SET WAITFOR may be used to modify the
  5634.         results of a WAITFOR instruction.
  5635.  
  5636.        SET WATCHDOG <seconds>
  5637.  
  5638.         SET WATCHDOG sets the XOFF watchdog timer timeout.  When an
  5639.         XOFF is received a timer begins.  If no XON is received with-
  5640.         in <timer> seconds, the XOFF condition is cancelled.
  5641.  
  5642.         WARNING:  Script authors who use this command to increase the
  5643.         default XOFF timeout run a SERIOUS risk of locking up their
  5644.         machines.  XOFF is a frequent noise character...  Without the
  5645.         watchdog timer, any noise character might stop COM-AND cold.
  5646.  
  5647.        SET WRAP (ON!OFF)
  5648.  
  5649.         SET WRAP controls the action taken when the cursor reaches
  5650.         the rightmost column of the screen.  When WRAP is OFF, each
  5651.         character received is displayed one line until a cr/lf.
  5652.  
  5653.  
  5654.  
  5655.  
  5656.  
  5657.  
  5658.  
  5659.  
  5660.  
  5661.  
  5662.  
  5663.  
  5664. Version 2.9: 921203
  5665.  
  5666. COM-AND: IBM PC Communications Script Language                 Page 100
  5667.  
  5668.  
  5669. VI.    SET Commands (continued)
  5670.  
  5671.  
  5672.     A. Basic set (continued)
  5673.  
  5674.        SET XBAUD (DFT!<speed>)
  5675.  
  5676.         SET XBAUD sets the base rate for efficiency calculations
  5677.         during file transfers.    DFT instructs COM-AND to use the
  5678.         actual linespeed (and is the default).    Linespeeds other-
  5679.         wise are as the SET BAUD statement.
  5680.  
  5681.         When the DTE speed (CPU to modem) rate differs from the
  5682.         DCE rate (modem to modem), this alteration may be used to
  5683.         correct computed efficiency.
  5684.  
  5685.         This setting is automatically cleared by COM-AND after a
  5686.         hangup, and during dialing (manual or scripted).  It must
  5687.         be set for each connection.
  5688.  
  5689.        SET XSUI <number>
  5690.  
  5691.         SET XSUI sets the frequency (as an interval of blocks) with
  5692.         which COM-AND updates its protocol status screens during a
  5693.         file transfer.    XSUI is mnemonic for 'xfer screen update
  5694.         interval' (sorry!).
  5695.  
  5696.         At 9600 bps and above, the time it takes to paint the status
  5697.         screen becomes a significant percentage of the overall time
  5698.         spent.    Setting the update interval to '5' has a visible
  5699.         impact even at 2400 bps.
  5700.  
  5701.        SET ZMODEM <subcommand>
  5702.  
  5703.         The SET ZMODEM subcommands are discussed below ("E").
  5704.  
  5705.  
  5706.  
  5707.  
  5708.  
  5709.  
  5710.  
  5711.  
  5712.  
  5713.  
  5714.  
  5715.  
  5716.  
  5717.  
  5718.  
  5719. Version 2.9: 921203
  5720.  
  5721. COM-AND: IBM PC Communications Script Language                 Page 101
  5722.  
  5723.  
  5724. VI.    SET Commands (continued)
  5725.  
  5726.  
  5727.     B. SET ASCII subcommands
  5728.  
  5729.        SET ASCII settings hold after the script terminates.  The default
  5730.        values within a script are the values that were set before the
  5731.        script executes.
  5732.  
  5733.  ->       SET ASCII BLANKEX (ON!OFF)
  5734.  
  5735.         SET ASCII BLAN sets and resets blank line expansion for the
  5736.         SENDFILE ASCII function (if a line is empty, one blank is
  5737.         sent when this flag is on).
  5738.  
  5739.  ->       SET ASCII CHARPACE <number>
  5740.  
  5741.         SET ASCII CHARPACE sets an intercharacter delay (in milli-
  5742.         seconds for the SENDFILE ASCII function.
  5743.  
  5744.  ->       SET ASCII ECHO (ON!OFF)
  5745.  
  5746.         SET ASCII ECHO enables (if set) the text echo during a
  5747.         SENDFILE ASCII function (only during current script).
  5748.  
  5749.        SET ASCII FLOW (ON!OFF)
  5750.  
  5751.         SET ASCII FLOW sets and resets flow control SENDFILE ASCII
  5752.         function.  When on, flow control is respected.
  5753.  
  5754.  ->       SET ASCII LINEPACE <number>
  5755.  
  5756.         SET ASCII LINE sets an delay at end-of-line (CR) in tenths
  5757.         of seconds for the SENDFILE ASCII function.
  5758.  
  5759.  ->       SET ASCII PACECHAR <number>
  5760.  
  5761.         SET ASCII PACE sets a pace character for the SENDFILE ASCII
  5762.         function.  The value provided is the decimal ascii value of
  5763.         the pace character (use 0 to turn this off).
  5764.  
  5765.        SET ASCII QUIET (ON!OFF)
  5766.  
  5767.         SET ASCII QUIET disables (if set) the alarm at the end of
  5768.         a SENDFILE ASCII function (only during current script).
  5769.  
  5770.  
  5771.  
  5772.  
  5773.  
  5774. Version 2.9: 921203
  5775.  
  5776. COM-AND: IBM PC Communications Script Language                 Page 102
  5777.  
  5778.  
  5779. VI.    SET Commands (continued)
  5780.  
  5781.  
  5782.     B. SET ASCII subcommands (continued)
  5783.  
  5784.        SET ASCII TABEX (ON!OFF)
  5785.  
  5786.         SET ASCII TABEX sets and resets tab expansion for the
  5787.         SENDFILE ASCII function.
  5788.  
  5789.  ->       SET ASCII UP_LF (LF!STRIP)
  5790.  
  5791.         SET ASCII UP_LF sets and resets LF stripping during a
  5792.         SENDFILE ASCII function.  Note:  the PROCOMM "UP_LF CR_LF"
  5793.         is not implemented at this time.
  5794.  
  5795.        SET ASCII UP_Z (STOP!SEND)
  5796.  
  5797.         SET ASCII UP_Z sets and resets control-z handling for the
  5798.         SENDFILE ASCII function.  When STOP, the transfer stops at
  5799.         a control-z (and the control-z is not transmitted).
  5800.  
  5801.  
  5802.     C. SET BPLUS subcommands
  5803.  
  5804.        SET BPLUS RECOVER (ON!OFF)
  5805.  
  5806.         SET BPLUS RECOVER enables and disables CIS-B+'s recovery
  5807.         feature.  When a receive is intended for an existing file
  5808.         (as the result of a previous, failed, transfer), the
  5809.         transfer picks up at the end of file (where the last one
  5810.         stopped), if enabled.  When disabled, transfers go to a
  5811.         unique file name ($ terminated as required).
  5812.  
  5813.  
  5814.  
  5815.  
  5816.  
  5817.  
  5818.  
  5819.  
  5820.  
  5821.  
  5822.  
  5823.  
  5824.  
  5825.  
  5826.  
  5827.  
  5828.  
  5829. Version 2.9: 921203
  5830.  
  5831. COM-AND: IBM PC Communications Script Language                 Page 103
  5832.  
  5833.  
  5834. VI.    SET Commands (continued)
  5835.  
  5836.  
  5837.     D. SET KERMIT subcommands
  5838.  
  5839.        SET KERMIT settings hold after the script terminates.  The
  5840.        default values within a script are the values that were set
  5841.        before the script executes (Alt-K).
  5842.  
  5843.  ->       SET KERMIT 8QUOTE <number>
  5844.  
  5845.         SET KERMIT 8QUOTE sets the 8-bit quote character used in
  5846.         KERMIT transfers.  The <number> is the decimal ascii value
  5847.         of the 8-bit quote character to use.
  5848.  
  5849.  ->       SET KERMIT BLOCKCHECK (1!2!3)
  5850.  
  5851.         SET KERMIT BLOCK sets the length of the blockcheck used in
  5852.         KERMIT transfers.  The blockcheck may be 1, 2 or 3 bytes.
  5853.  
  5854.  ->       SET KERMIT CQUOTE <number>
  5855.  
  5856.         SET KERMIT CQUOTE sets the control quote character used in
  5857.         KERMIT transfers.  The <number> is the decimal ascii value
  5858.         of the control quote character to use.
  5859.  
  5860.  ->       SET KERMIT EOLCHAR <number>
  5861.  
  5862.         SET KERMIT EOLCHAR sets the end-of-line character used in
  5863.         KERMIT transfers.  The <number> is the decimal ascii value
  5864.         of the end-of-line character to use.
  5865.  
  5866.        SET KERMIT MARK <number>
  5867.  
  5868.         SET KERMIT MARK sets the packet mark character used in
  5869.         KERMIT transfers.  The <number> is the decimal ascii value
  5870.         of the packet mark character to use.
  5871.  
  5872.  ->       SET KERMIT PADCHAR <number>
  5873.  
  5874.         SET KERMIT PADCHAR sets the pad character used in KERMIT
  5875.         transfers.  The <number> is the decimal ascii value of the
  5876.         pad character to use.
  5877.  
  5878.  ->       SET KERMIT PADNUM number
  5879.  
  5880.         SET KERMIT PADNUM sets the number of pad characters (if
  5881.         any) to use during KERMIT transfers.
  5882.  
  5883.  
  5884. Version 2.9: 921203
  5885.  
  5886. COM-AND: IBM PC Communications Script Language                 Page 104
  5887.  
  5888.  
  5889. VI.    SET Commands (continued)
  5890.  
  5891.  
  5892.     D. SET KERMIT subcommands (continued)
  5893.  
  5894.        SET KERMIT REPEAT <number>
  5895.  
  5896.         SET KERMIT REPEAT sets the repeat quote character used in
  5897.         KERMIT transfers.  The <number> is the decimal ascii value
  5898.         of the repeat quote character to use.
  5899.  
  5900.        SET KERMIT WINDOW <number>
  5901.  
  5902.         SET KERMIT WINDOW sets the maximum window size for KERMIT
  5903.         transfers.  A window maximum of 0 stops windowed transfers.
  5904.         COM-AND places an upper limit on this size (currently the
  5905.         limit is 8).
  5906.  
  5907.  
  5908.     E. SET ZMODEM subcommands
  5909.  
  5910.        SET ZMODEM AUTO (ON!OFF)
  5911.  
  5912.         ZMODEM download is capable of automatically starting when
  5913.         the sender starts its transmission.  You control whether
  5914.         COM-AND automatically recognizes the transfer.    [Note that
  5915.         during scripted operation, auto-ZMODEM only occurs when a
  5916.         display is being performed.]
  5917.  
  5918.        SET ZMODEM BLOCK <number>
  5919.  
  5920.         SET ZMODEM BLOCK sets a maximum blocksize for ZMODEM sends.
  5921.         When a blocksize is set (rather than negotiated), the trans-
  5922.         fer reverts to half duplex (send, ACK, send, ACK).  This is
  5923.         provided for special cases (badly errored lines).  It is not
  5924.         recommended, generally speaking.
  5925.  
  5926.         Blocksize is limited to 1024.  SET ZMODEM BLOCK 0 returns
  5927.         COM-AND's ZMODEM to full duplex (and automatic block sizing).
  5928.  
  5929.        SET ZMODEM RECOVER (ON!OFF)
  5930.  
  5931.         SET ZMODEM RECOVER enables and disables ZMODEM's recovery
  5932.         feature.  When a receive is intended for an existing file
  5933.         (as the result of a previous, failed, transfer), the
  5934.         transfer picks up at the end of file (where the last one
  5935.         stopped), if enabled.  When disabled, transfers go to a
  5936.         unique file name ($ terminated as required).
  5937.  
  5938.  
  5939. Version 2.9: 921203
  5940.  
  5941. COM-AND: IBM PC Communications Script Language                 Page 105
  5942.  
  5943.  
  5944. VII.    String Intrinsics
  5945.  
  5946.  
  5947.     Certain string values are treated as having an intrinsic meaning
  5948.     by the script processor.  All intrinsic string values must have
  5949.     an underscore ("_") in column 0 of the string, and otherwise be
  5950.     alone in the string (note: only the first 4 characters of the
  5951.     intrinsic keyword are significant).   For example:
  5952.  
  5953.          S0 = "_Date"            ; is equivalent to
  5954.          S0 = "_DateToday"       ; .. where contiguous text is ignored
  5955.  
  5956.     But  S0 = "_Date today" would not be treated as containing an
  5957.     intrinsic value.
  5958.  
  5959.     When the script processor encounters an intrinsic function, it
  5960.     replaces the value with the computed value.  String intrinsic
  5961.     functions are:
  5962.  
  5963.  
  5964.     _ABLA         ASCII Blank-expand flag                  ON/OFF
  5965.     _ACCF         Current accessory file             <file name>
  5966.     _ACHA         ASCII Character pace delay            <value in ms>
  5967.     _ADVE         Advertisement flag                   ON/OFF
  5968.     _AECH         ASCII Echo flag                      ON/OFF
  5969.     _AFLO         ASCII flow control flag                  ON/OFF
  5970.     _ALAR         Alarm flag                       ON/OFF
  5971.     _ALIN         ASCII Line pace time            <value in 10 ms>
  5972.     _ALLO         Number of dynamic variables            <number>
  5973.     _APAC         ASCII pace character           <decimal ASCII value>
  5974.     _AQUI         ASCII quiet flag (no alarm)              ON/OFF
  5975.     _ATAB         ASCII tab expand flag                  ON/OFF
  5976.     _ATIM         Alarm time                  <value in secs>
  5977.     _AUPL         SET ASCII UP_LF setting                LF/STRIP
  5978.     _AUPZ         ASCII Send ctl-z flag               STOP/SEND
  5979.     _BAR         Status line color attribute     <f/bgnd color attr>
  5980.     _BELL         Bell tone                       <value in hz>
  5981.     _BKSC         Backscreen buffer size         <value in 1k pages>
  5982.     _BREA         Break duration                   <value in ms>
  5983.     _BREC         BPlus download recovery flag              ON/OFF
  5984.     _BSIN         Backspace in              NONDESTRUC/DESTRUC
  5985.     _BSOU         Backspace out                   BACKSP/DELETE
  5986.     _BSUP         Blank suppress flag                  ON/OFF
  5987.     _CALL         Last dialed dialing directory     <entry name string>
  5988.     _CDIS         Control-character display flag              ON/OFF
  5989.     _CDRE         CD respect flag                      ON/OFF
  5990.     _CHAT         Chat flag                          ON/OFF
  5991.  
  5992.  
  5993.  
  5994. Version 2.9: 921203
  5995.  
  5996. COM-AND: IBM PC Communications Script Language                 Page 106
  5997.  
  5998.  
  5999. VII.    String Intrinsics (continued)
  6000.  
  6001.  
  6002.     _CHLI         Chat lines (numeric string)            <number>
  6003.     _CLFI         Call Log file name              <file name>
  6004.     _CLOC         Screen clock flag                      ON/OFF
  6005.     _CLOG         Call logging flag                      ON/OFF
  6006.     _COLO         Color flag                       ON/OFF
  6007.     _COMM         Comm mode                     BIOS/DIRECT
  6008.     _CONN         Connection                       YES/NO
  6009.     _CRLF         Received CR -> CRLF flag (ON = CR->CRLF)          ON/OFF
  6010.     _DATE         Current date                <mm/dd/yyyy>
  6011.     _DBLC         Double click interval               <value in ms>
  6012.     _DDAC         Dialing direc.area code (strip) string        <string>
  6013.     _DDOV         Override Alt-D speed                  ON/OFF
  6014.     _DDPR         Dialing directory 'all calls' prefix           <string>
  6015.     _DEFA         Menu window color attribute     <f/bgnd color attr>
  6016.     _DIRF         Current dialing file             <file name>
  6017.     _DLDI         Current download drive:subdirectory      <d:subdir>
  6018.     _DOW         Day of week (0 -> Sunday, 1 -> Monday, etc)    <number>
  6019.     _DPRE         Dialing prefix (from Alt-S)            <string>
  6020.     _DROP         Drop DTR to hangup flag                  ON/OFF
  6021.     _DSUF         Dialing suffix (from Alt-S)            <string>
  6022.     _DUPL         Duplex setting                   HALF/FULL
  6023.     _EFFI         Last transfer efficiency                <number>
  6024.     _ELAP         Elapsed time since call               <hh:mm:ss:tt>
  6025.     _EMUL         Display emulation           TTY/ANSI/VIDTEX/VT100/VT52...
  6026.     _ERRL         RUN statement error level return            <number>
  6027.     _ERRO         Last transfer error text              <nn: text>
  6028.     _EXIT         Current exit script name             <file name>
  6029.     _EXQU         Exit query flag                      ON/OFF
  6030.     _FLOW         Software flow control flag               ON/OFF
  6031.     _HARD         Hardware flow control flag (UNIDIRECTIONAL)      ON/OFF
  6032.     _HMOU         Mouse horizontal sensitivity      <value in mickeys>
  6033.     _IFIL         FOPENI (script input) file          <file name>
  6034.     _INAF         Init modem after hangup flag              ON/OFF
  6035.     _IPOS         Disk position in input file            <number>
  6036.     _K8QU         KERMIT 8 bit quote            <decimal ASCII value>
  6037.     _KBDB         Keyboard buffer flag                  ON/OFF
  6038.     _KCHK         KERMIT Block check                    1/2/3
  6039.     _KCQU         KERMIT control quote character    <decimal ASCII value>
  6040.     _KEOL         KERMIT EOL character           <decimal ASCII value>
  6041.     _KMAR         KERMIT Mark character           <decimal ASCII value>
  6042.     _KNUM         KERMIT number pads                 <number>
  6043.     _KPAD         KERMIT pad character           <decimal ASCII value>
  6044.     _KREP         KERMIT Repeat character           <decimal ASCII value>
  6045.     _KWIN         KERMIT maximum window                <number>
  6046.  
  6047.  
  6048.  
  6049. Version 2.9: 921203
  6050.  
  6051. COM-AND: IBM PC Communications Script Language                 Page 107
  6052.  
  6053.  
  6054. VII.    String Intrinsics (continued)
  6055.  
  6056.  
  6057.     _LEGE         Last LEGEND string (or null)            <string>
  6058.     _LOGG         Logging flag                      ON/OFF
  6059.     _LOGH         Log Held flag                      ON/OFF
  6060.     _LOGM         Log Marked flag                      ON/OFF
  6061.     _MACF         Current macro file              <file name>
  6062.     _MASK         (7 bit) mask flag                      ON/OFF
  6063.     _MCON         Modem connect string (from Alt-S)            <string>
  6064.     _MDCH         Modem delay character           <decimal ASCII value>
  6065.     _MDEL         Modem character delay               <value in ms>
  6066.     _MEMO         Free memory (above COM-AND)       <value in paragraphs>
  6067.     _MENU         Menu mode flag                      ON/OFF
  6068.     _MESC         Modem escape string (from Alt-S)            <string>
  6069.     _METH         Last transfer method                <string>
  6070.     _MHAN         Modem hangup string (from Alt-S)            <string>
  6071.     _MINI         Modem initialization string (from Alt-S)        <string>
  6072.     _MOUS         Mouse presence                      ON/OFF
  6073.     _MUSI         Play received music strings              ON/OFF
  6074.     _NULL         Null value                   <empty string>
  6075.     _OFIL         FOPENO (script output) file         <file name>
  6076.     _ONES         Current ON ESCAPE GOSUB label (8 characters)   <string>
  6077.     _OPOS         Disk position in output file            <number>
  6078.     _OVER         Overlay file last loaded (or null)      <file name>
  6079.     _OVEN         Overlay end entry address            <number or NONE>
  6080.     _PARM         Current comm parms            <bbbb,p,d,s,COMx>
  6081.     _PCJR         Suspend comm during disk (PCJr)              ON/OFF
  6082.     _PORT         Current port number (BIOS/DIRECT)            <number>
  6083.     _PRIN         Printer flag                      ON/OFF
  6084.     _QUIE         Suppress bells flag                  ON/OFF
  6085.     _RDEL         Reconnect delay                 <value in secs>
  6086.     _RDIS         Receive display flag                  ON/OFF
  6087.     _RDMA         Redial maximum value (0 -> no limit set)        <number>
  6088.     _RDPN         Redial pass on which dial terminated        <number>
  6089.     _RECH         Received echo flag                   ON/OFF
  6090.     _REMA         Remapping flag                      ON/OFF
  6091.     _REMO         Perform remote script commands              ON/OFF
  6092.     _REMF         Remote function key usage                  ON/OFF
  6093.     _RLEO         Display RLEs flag                      ON/OFF
  6094.     _RTSD         RTS discipline flag                  ON/OFF
  6095.     _RTSF         Hardware flow control (BIDIRECTIONAL)          ON/OFF
  6096.     _RUNT         Runtime invocation (see below)              YES/NO
  6097.     _SCRI         Current script file name             <file name>
  6098.     _SILE         Duration of ON SILENCE timeout         <value in secs>
  6099.     _SIZE         Last transfer size                 <number>
  6100.     _SLOW         Slow transfers flag                  ON/OFF
  6101.  
  6102.  
  6103.  
  6104. Version 2.9: 921203
  6105.  
  6106. COM-AND: IBM PC Communications Script Language                 Page 108
  6107.  
  6108.  
  6109. VII.    String Intrinsics (continued)
  6110.  
  6111.  
  6112.     _SSIZ         Current screen size (# lines)            <number>
  6113.     _STAT         Status line displayed                  ON/OFF
  6114.     _SUBD         Read current drive:subdirectory          <d:subdir>
  6115.     _SWRI         Screen write method             DOS/BIOS/DIRECT
  6116.     _TEXT         Text window color attribute     <f/bgnd color attr>
  6117.     _TIME         Current time                   <hh:mm:ss:tt>
  6118.     _TRAN         In/Out Translate                      ON/OFF
  6119.     _TRFI         Last transferred file (except batch)     <file name>
  6120.     _TRTI         Last transfer time               <hh:mm:ss>
  6121.     _TTHR         Type-through flag                      ON/OFF
  6122.     _UART         UART type (-1,0,...3: see below)            <number>
  6123.     _VMOU         Mouse vertical sensitivity       <value in mickeys>
  6124.     _WRAP         Returns SET WRAP status                  ON/OFF
  6125.     _XSUI         Transfer screen update interval            <number>
  6126.     _ZAUT         ZMODEM auto download flag                  ON/OFF
  6127.     _ZBLO         ZMODEM maximum blocksize                <number>
  6128.     _ZREC         ZMODEM download recovery flag              ON/OFF
  6129.  
  6130.     Intrinsic returned values are left justified in the string (with the
  6131.     exception of "_PARM", which does not justify " 300" in the string).
  6132.  
  6133.     The returned value may or may not be blank padded.  [Blank padding
  6134.     is of concern in some cases.  The construction 'Sx = Sx&""' may be
  6135.     used to remove trailing spaces.]
  6136.  
  6137.     Note:  when a batch file transfer is performed (e.g.  KERMIT), only
  6138.     the last file name transferred is reported.  In the case of ZMODEM
  6139.     and YMODEM-Batch the file name is always null, by the protocol's
  6140.     definition for last file name transferred.
  6141.  
  6142.     The file transfer intrinsics only refer to binary protocols.  They do
  6143.     not report ASCII transfers.
  6144.  
  6145.     The "_UART" intrinsic returns the values -1,0,1...3 according to the
  6146.     UART type found when the current port was opened.  These values mean:
  6147.  
  6148.          -1 -> No UART detected
  6149.           0 -> 8250 type UART detected (NO FIFO buffering)
  6150.         1/2 -> 16450/16550 UART detected (NO FIFO buffering)
  6151.           3 -> 16550A type UART detected (FIFO buffering)
  6152.  
  6153.     The "_RUNT" intrinsic may be used to distinguish automatic scripts
  6154.     (COM-AND.CMD and INSTALL.CMD) from all other scripts.  These scripts
  6155.     are automatically invoked at run-time (INSTALL being invoked only in
  6156.     certain cases).  "_RUNT" returns YES during automatic scripts.
  6157.  
  6158.  
  6159. Version 2.9: 921203
  6160.  
  6161. COM-AND: IBM PC Communications Script Language                 Page 109
  6162.  
  6163.  
  6164. VIII.    Script Errors
  6165.  
  6166.  
  6167.     Errors are reported in the form:  <line #>: <error text>
  6168.  
  6169.     Error texts are:   Invalid token
  6170.  
  6171.                Unexpected end of file
  6172.  
  6173.                Unexpected token
  6174.  
  6175.                Missing token
  6176.  
  6177.                Stack overflow
  6178.  
  6179.                Stack underflow
  6180.  
  6181.                Unexpected characters at end of line
  6182.  
  6183.                Unexpected CASE
  6184.                Unexpected DEFAULT
  6185.                Unexpected ENDCASE
  6186.                Unexpected ENDSWITCH
  6187.                Unexpected ELSE
  6188.                Unexpected ENDIF
  6189.                Unexpected RETURN
  6190.                Unexpected ENDFOR
  6191.                Unexpected UNTIL
  6192.                Unexpected ENDWHILE
  6193.                Unexpected FRETURN
  6194.  
  6195.  
  6196.     Note:  COM-AND does not terminate in all cases where an error is
  6197.     encountered.  Stack over/underflow errors always terminate a script,
  6198.     as do the unexpected CASE/DEFAULT/ENDCASE/ENDSWITCH/ELSE/ENDIF/
  6199.     RETURN errors.    Unexpected end-of-file (when a GOTO branches to a
  6200.     nonexistent label) terminates the script.  Other errors do not ter-
  6201.     minate the script.
  6202.  
  6203.  
  6204.     Note:  PROCOMM does not accept a command on a labelled line.
  6205.     However, PROCOMM does not issue an error message, either.  COM-AND
  6206.     reports 'unexpected characters at end of line' when this is
  6207.     encountered, and ignores the command.
  6208.  
  6209.  
  6210.  
  6211.  
  6212.  
  6213.  
  6214. Version 2.9: 921203
  6215.  
  6216. COM-AND: IBM PC Communications Script Language                 Page 110
  6217.  
  6218.  
  6219. IX.    ASPECT 1.x and PROCOMM 2.x scripts
  6220.  
  6221.  
  6222.     COM-AND executes most scripts written for PROCOMM 2.x and for the
  6223.     ASPECT 1.x script language (tm DataStorm).  However, the ASPECT
  6224.     language is a small subset of the COM-AND script language.  Although
  6225.     COM-AND executes most PROCOMM scripts, PROCOMM does not execute
  6226.     most COM-AND scripts.  To retain ability to execute a script under
  6227.     PROCOMM:
  6228.  
  6229.        o     ONLY use statements marked '->' in the discussion above.
  6230.          These statements are compatible with the ASPECT language.
  6231.  
  6232.     o    ONLY use constructions highlighted '->' in the discussion above.
  6233.          For example:  COM-AND accepts (and PROCOMM won't):
  6234.  
  6235.          STRCAT S0 S1(5:10)      ; Extract substring and concatenate
  6236.  
  6237.     o    REFER to the PROCOMM document (or ASPECT manual for full dis-
  6238.          cussion of ANY statement you wish to employ.
  6239.  
  6240.     o    Avoid numeric variables N10-N99
  6241.  
  6242.     o    Avoid string variables S10-S29
  6243.  
  6244.     o    Avoid ALL string variables V0-Vn
  6245.  
  6246.     o    Avoid ALL usage of FLAG variables
  6247.  
  6248.     o    Use full keywords;  do not abbreviate to 4 characters.
  6249.  
  6250.  
  6251.  
  6252.  
  6253.  
  6254.  
  6255.  
  6256.  
  6257.  
  6258.  
  6259.  
  6260.  
  6261.  
  6262.  
  6263.  
  6264.  
  6265.  
  6266.  
  6267.  
  6268.  
  6269. Version 2.9: 921203
  6270.  
  6271. COM-AND: IBM PC Communications Script Language                 Page 111
  6272.  
  6273.  
  6274. IX.    ASPECT 1.x and PROCOMM 2.x scripts (continued)
  6275.  
  6276.  
  6277.     Unimplemented ASPECT commands
  6278.     -----------------------------
  6279.  
  6280.     Every attempt has been made to provide a script language compatible
  6281.     with PROCOMM.  However, certain commands do not apply to COM-AND.
  6282.     Others have been changed for more or less obvious reasons.  Changes
  6283.     and optional usages have been highlighted above.
  6284.  
  6285.  
  6286.     The following ASPECT commands have not been implemented:
  6287.  
  6288.  
  6289.  *    HELP
  6290.  *    HOST
  6291.  *    KERMSERV FINISH
  6292.  *    KERMSERV GETFILE
  6293.  *    KERMSERV LOGOUT
  6294.  *    KERMSERV SENDFILE
  6295.  *    SET ASCII DN_CR (CR!CR_LF!STRIP)
  6296.  *    SET ASCII DN_LF (LF!CR_LF!STRIP)
  6297.  *    SET ASCII UP_CR (CR!CR_LF!STRIP)
  6298.  *    SET CR_OUT (CR!CR_LF)
  6299.  *    SET ENQ ON         ; SET ENQ OFF!CISB implemented
  6300.  *    SET HOSTPSWD <string>
  6301.  *    SET KERMIT PACKSIZE <number>
  6302.  *    SET KERMIT HANDSHAKE <number>
  6303.  *    SET KERMIT FILETYPE (TEXT!BINARY)
  6304.  *    SET SCROLL (ON!OFF)
  6305.  *    SET SHELLPSWD <string>
  6306.  *    SET SOUND (ON!OFF)
  6307.  *    SET TXPACE <number>  ; Partially implemented as SET ASCII CHARPACE
  6308.  *    SNAPSHOT
  6309.  
  6310.  
  6311.  
  6312.  
  6313.  
  6314.  
  6315.  
  6316.  
  6317.  
  6318.  
  6319.  
  6320.  
  6321.  
  6322.  
  6323.  
  6324. Version 2.9: 921203
  6325.  
  6326. COM-AND: IBM PC Communications Script Language                 Page 112
  6327.  
  6328.  
  6329. X.    Program Requirements
  6330.  
  6331.  
  6332.     This program is coded for an IBM PC or DOS compatible machine.
  6333.     COM-AND does direct to screen buffer fetches and stores (unless
  6334.     BIOS screen updates are directed using the /C switch or the
  6335.     Alt-O options menu).
  6336.  
  6337.  
  6338.     COM-AND is TopView aware even without the /C switch or Alt-O option.
  6339.  
  6340.  
  6341.     COM-AND supports MDA, CGA, EGA, VGA and Hercules.  COM-AND uses a
  6342.     Microsoft Mouse if one is available...
  6343.  
  6344.  
  6345.     COM-AND disk I/O is done through the 'Handle' oriented I/O routines
  6346.     added to DOS 2.0.  Therefore DOS 2.0 is a minimum requirement.
  6347.  
  6348.  
  6349.     COM-AND (Version 2.9) requires 277K for itself.  You need 384K
  6350.     minimally to use COM-AND and the DOS Gateway, and more to take
  6351.     advantage of accessories.
  6352.  
  6353.  
  6354.  
  6355.  
  6356.  
  6357.  
  6358.  
  6359.  
  6360.  
  6361.  
  6362.  
  6363.  
  6364.  
  6365.  
  6366.  
  6367.  
  6368.  
  6369.  
  6370.  
  6371.  
  6372.  
  6373.  
  6374.  
  6375.  
  6376.  
  6377.  
  6378.  
  6379. Version 2.9: 921203
  6380.  
  6381. COM-AND: IBM PC Communications Script Language                 Page 113
  6382.  
  6383.  
  6384. XI.    Program and Author Information
  6385.  
  6386.  
  6387.     This program was written using Microsoft Macro-Assembler.  The
  6388.     author likes assembler.  Assembly language is an entirely appro-
  6389.     priate vehicle for some of the program, and a not-inappropriate
  6390.     vehicle for the rest of it.  Everything, in moderation...
  6391.  
  6392.  
  6393.     COM-AND has been written by, and is supported by R. Scott McGinnis
  6394.     of Chicago (CABER Software), Illinois.    My GEnie and Delphi IDs are:
  6395.     TARTAN.  My CIS ID is 73147,2665.  Comment and suggestions (and
  6396.     criticism in moderation) are welcomed:
  6397.  
  6398.              CABER Software
  6399.              R. (Scott) McGinnis
  6400.              P.O. Box 3607 Mdse Mart
  6401.              Chicago, IL 60654-0607
  6402.  
  6403.  
  6404.  
  6405.     I must thank Mike Todd and John Poindexter of the Source for their
  6406.     strenuous testing and excellent suggestions.  Mike and John have
  6407.     pushed me hard, and I thank them.  This script language is in large
  6408.     part shaped by these gentlemen.
  6409.  
  6410.  
  6411.     I also thank my wife, Elizabeth, who supported me whole-heartedly
  6412.     in this effort.  She is my lady and my love.
  6413.  
  6414.  
  6415.     This program (Version 2.9) may be distributed freely along with its
  6416.     accessories with the caveat that the Author information displayed at
  6417.     program termination is not removed.  If you USE COM-AND after a 30
  6418.     day evaluation, you MUST pay for it.
  6419.  
  6420.  
  6421.     PROCOMM, PCPLus, and ASPECT are trademarks of the DataStorm cor-
  6422.     poration.  DSZ is a trademark of OMEN Technology.  Windows is a
  6423.     trademark of the MicroSoft Corporation.  DesqView is a trademark
  6424.     of the QuarterDeck Corporation.  Smartmodem is a trademark of the
  6425.     Hayes Corporation.
  6426.  
  6427.  
  6428.  
  6429.  
  6430.  
  6431.  
  6432.  
  6433.  
  6434. Version 2.9: 921203
  6435.  
  6436. COM-AND: IBM PC Communications Script Language                 Page 114
  6437.  
  6438.  
  6439. A.    Example scripts
  6440.  
  6441.  
  6442.     A script to dial a modem direct, send two carriage returns, and
  6443.     wait for a logon prompt looks like:
  6444.  
  6445.     ------------------------------------------------------------------
  6446.     DEFTIME "60"            ; Wait 60 seconds for an incoming string
  6447.     IF NOT LINKED        ; If script not invoked from Alt-D
  6448.        MESSAGE "^GDialing direct"
  6449.        DIAL "1"             ; Call dial dir entry number 1 (PLINK)
  6450.        IF FAILED        ; IF esc out
  6451.           EXIT        ; terminate script
  6452.           ENDIF        ; End if failed
  6453.        ENDIF        ; End if not linked
  6454.  
  6455.     PAUSE "5"               ; Wait for the modem to settle down
  6456.     TRANSMIT "!"            ; Transmit Carriage return <CR>
  6457.     PAUSE "1"               ; Wait 1 sec
  6458.     TRANSMIT "!"            ; Transmit Carriage return <CR>
  6459.     WAITFOR "USER ID:"      ; Wait for the 'USER ID' prompt
  6460.  
  6461.     SET BSUPPRESS OFF    ; Turn off blank line suppression
  6462.     SET MASK ON        ; Turn on high bit mask
  6463.     SET CDISPLAY ON     ; Display control characters
  6464.     ALARM            ; Sound alarm:    we're done
  6465.     -------------------------------------------------------------------
  6466.  
  6467.  
  6468.  
  6469.  
  6470.  
  6471.  
  6472.  
  6473.  
  6474.  
  6475.  
  6476.  
  6477.  
  6478.  
  6479.  
  6480.  
  6481.  
  6482.  
  6483.  
  6484.  
  6485.  
  6486.  
  6487.  
  6488.  
  6489. Version 2.9: 921203                           Appendices
  6490.  
  6491. COM-AND: IBM PC Communications Script Language                 Page 115
  6492.  
  6493.  
  6494. A.    Example scripts (continued)
  6495.  
  6496.  
  6497.     A script to dial GEnie, and logon makes special provisions to turn
  6498.     echo off (mask it, anyway) during logon:
  6499.  
  6500.     ------------------------------------------------------------------
  6501.     DEFTIME "60"            ; Wait 60 seconds for an incoming string
  6502.     IF NOT LINKED        ; If not from Alt-d
  6503.        MESSAGE "^GDialing GEnie direct"
  6504.        DIAL "4"             ; Call dial dir entry number 4 (GEnie)
  6505.        IF FAILED        ; IF esc out
  6506.           EXIT        ; terminate script
  6507.           ENDIF        ; Endif failed
  6508.        ENDIF        ; End test if linked
  6509.  
  6510.     PAUSE "3"               ; Wait for the modem to settle down
  6511.     TRANSMIT "hhh"          ; Transmit
  6512.     WAITFOR "U#="           ; Wait for the 'USER ID' prompt
  6513.  
  6514.     SET BSUPPRESS ON    ; Turn on blank line suppression
  6515.     SET MASK ON        ; Turn on high bit mask
  6516.     SET CDISPLAY OFF    ; Control character display
  6517.     SET DUPLEX FULL     ; Turn off local echo for ID/psw
  6518.     ALARM            ; Sound alarm
  6519.  
  6520.     MESSAGE "^MEnter ID,password for GEnie:"
  6521.     MGET S0         ; Get ID/psw
  6522.     TRANSMIT S0        ; Transmit ID/psw
  6523.     TRANSMIT "^M"           ; .. and a final c/r
  6524.     SET DUPLEX HALF     ; Turn echo back on
  6525.     ------------------------------------------------------------------
  6526.  
  6527.  
  6528.  
  6529.  
  6530.  
  6531.  
  6532.  
  6533.  
  6534.  
  6535.  
  6536.  
  6537.  
  6538.  
  6539.  
  6540.  
  6541.  
  6542.  
  6543.  
  6544. Version 2.9: 921203                           Appendices
  6545.  
  6546. COM-AND: IBM PC Communications Script Language                 Page 116
  6547.  
  6548.  
  6549. A.    Example scripts (continued)
  6550.  
  6551.  
  6552.     A script to dial Telenet (entry number 10 in the dialing directory
  6553.     assumed, and make connection according to the parameters set
  6554.     looks like:
  6555.  
  6556.     ------------------------------------------------------------------
  6557.     LEGEND " Dialing Telenet... "
  6558.     DEFTIME "60"            ; Wait 60 seconds for an incoming string
  6559.     IF NOT LINKED        ; If script not invoked from Alt-D
  6560.        DIAL "10"            ; Call dial dir entry number 10 (Telenet)
  6561.        IF FAILED        ; IF esc out
  6562.           EXIT        ; terminate script
  6563.           ENDIF        ; End if failed
  6564.        ENDIF        ; End if not linked
  6565.  
  6566.     COMPARMS S1            ; Get current settings
  6567.     IF STRCMP "N" S1(5:5)           ; If no parity
  6568.        IF STRCMP "2400" S1(0:3)     ; If 2400 bps connect Send @D<cr>
  6569.           PAUSE 1            ;    Wait for the modem to settle
  6570.           TRANS "@"                 ;    Send @D<cr> slowly
  6571.           PAUSE 1            ;    Wait a moment
  6572.           TRANS "D"                 ;    Set to 8N1
  6573.           PAUSE 1            ;    Wait a moment
  6574.        ELSE             ; ELSE 300/1200 (send <cr>D<cr>)
  6575.           PAUSE "1"                 ;    Wait for the modem to settle
  6576.           TRANSMIT "!D"             ;    Transmit Carriage return <CR> D
  6577.           ENDIF
  6578.     ELSE                ; ELSE even or odd parity
  6579.        PAUSE "1"                    ;    Wait for the modem to settle
  6580.        TRANSMIT "!"                 ;    Transmit Carriage return <CR>
  6581.        ENDIF
  6582.     PAUSE "1"                       ; Wait 1 sec
  6583.     TRANSMIT "!"                    ; Transmit Carriage return <CR>
  6584.  
  6585.     WAITFOR "TERMINAL="     ; Wait for the prompt
  6586.     TRANSMIT "D1!"          ; Set terminal type
  6587.     WAITFOR "@"             ; Wait for next prompt
  6588.     SET BSUPPRESS OFF    ; Turn off blank line suppression
  6589.     SET MASK ON        ; Turn on high bit mask
  6590.     SET CDISPLAY ON     ; Display control characters
  6591.     ALARM            ; Sound alarm:    we're done
  6592.     ------------------------------------------------------------------
  6593.  
  6594.  
  6595.  
  6596.  
  6597.  
  6598.  
  6599. Version 2.9: 921203                           Appendices
  6600.  
  6601. COM-AND: IBM PC Communications Script Language                 Page 117
  6602.  
  6603.  
  6604. B.    HOST and BBS scripts
  6605.  
  6606.  
  6607.     Included with this release of COM-AND are two large scripts.  The
  6608.     HOST.CMD script supports a limited Host mode for callers to your PC;
  6609.     BBS.CMD supports a more extensive BBS function (with multiple users,
  6610.     mail, upload/download files, bulletins and so on).
  6611.  
  6612.  
  6613.     The advantage of a scripted HOST or BBS mode is flexibility.  You
  6614.     may use a script as supplied, or tailor it to your needs.  As the
  6615.     supplied scripts use a public domain graphic path display utility
  6616.     (TREED), you might want to remove the function (at least the prompt
  6617.     for it) if you don't have the program.  You may wish to add other
  6618.     functions.
  6619.  
  6620.  
  6621.     Documentation has been provided with each of the scripts.  For those
  6622.     interested in having a simple HOST mode, or a simple BBS, refer to
  6623.     the scripts archive (CAxx-3) included with this distribution.
  6624.  
  6625.  
  6626.     A version of the BBS script (constantly evolving) is maintained for
  6627.     COM-AND support and distribution by Support EtCetera in Long Beach,
  6628.     CA.  Support EtCetera supports, markets and distributes COM-AND
  6629.     (among other products).  The version of this script used by Support
  6630.     EtCetera provides instant access, after BBS registration, and many
  6631.     more features.
  6632.  
  6633.  
  6634.     Mike Todd, the sysop of the BBS and President of Support EtCetera
  6635.     always has the most current release (or beta) of COM-AND available
  6636.     there.    Mike also makes the version of the BBS script he uses (con-
  6637.     siderably extended beyond the functions in this release) available
  6638.     as a Support EtCetera product.    Contact Support EtCetera:
  6639.  
  6640.         Support EtCetera        Voice: (310) 439-6104
  6641.         1 World Trade Center    BBS:   (310) 439-7714 (1200/2400 8n1)
  6642.         PO Box 32187        UNISON: MIKETODD (PARTI: Mike Todd)
  6643.         Long Beach CA, 90832-2187
  6644.  
  6645.  
  6646.     Mike is always in contact with the author of COM-AND and up-to-date
  6647.     on COM-AND developments.  Many innovations in the use of COM-AND and
  6648.     COM-AND scripts are available first through the Support EtCetera BBS
  6649.     (and are Mike's suggestions, embodied, t'boot).  Having read this
  6650.     far, the author recommends you call Support EtCetera!
  6651.  
  6652.  
  6653.  
  6654. Version 2.9: 921203                           Appendices
  6655.  
  6656. COM-AND: IBM PC Communications Script Language                 Page 118
  6657.  
  6658.  
  6659. C.    External protocol drivers
  6660.  
  6661.  
  6662.     COM-AND supports external protocol drivers through its F1 (acces-
  6663.     sories) menu.  You may edit the entries in the F1 menu to load and
  6664.     execute just about any program you might wish (and have memory for).
  6665.     If you limit the F1 entries to simple script invocations, you may
  6666.     also use the same script names through F2.
  6667.  
  6668.  
  6669.     For example, you might wish to use a different implementation of
  6670.     ZMODEM than COM-AND's.  [COM-AND implements a complete ZMODEM.  How-
  6671.     ever, some of the management and transfer options are not available
  6672.     through COM-AND.] You might do this with Chuck Forsberg's DSZ.COM
  6673.     program, if you have registered it.  DSZ is a program used from
  6674.     within other comm programs to perform ZMODEM transfers (and X/Ymodem
  6675.     transfers too).  DSZ is revised quite often (to expand its
  6676.     function), and is available most everywhere.
  6677.  
  6678.  
  6679.     For downloading purposes, no script is needed to invoke DSZ.  How-
  6680.     ever, as mentioned above, the F1 entry may be coded to use a script,
  6681.     in order for the same function to be manually invoked through F2.
  6682.     The file name used for the downloaded file is determined by the
  6683.     sender.  Revise an F1 entry (with the 'r' subcommand) as follows:
  6684.  
  6685.         Name:        Download using YMODEM
  6686.         Subdirectory:    (whatever subdirectory your DSZ occupies)
  6687.         Program:        (leave this field blank)
  6688.         Script:        DSZDOWN.CMD
  6689.  
  6690.     The script DSZDOWN.CMD could be written:
  6691.     ------------------------------------------------------------------
  6692.     COMPARMS S1        ; read current settings
  6693.     S2 =  "DSZ.COM port " * S1(14:14) * " rb " ; Ask for YMODEM rcv
  6694.     RUN S2            ; Load and run DSZ
  6695.     ------------------------------------------------------------------
  6696.     Note: change " rb " to " rz " for ZMODEM
  6697.     ------------------------------------------------------------------
  6698.  
  6699.  
  6700.  
  6701.  
  6702.  
  6703.  
  6704.  
  6705.  
  6706.  
  6707.  
  6708.  
  6709. Version 2.9: 921203                           Appendices
  6710.  
  6711. COM-AND: IBM PC Communications Script Language                 Page 119
  6712.  
  6713.  
  6714. C.    External protocol drivers (continued)
  6715.  
  6716.  
  6717.     DSZ requires a file name for uploading.  You may accomplish this by
  6718.     editing the F1 menu as follows, and creating the following script
  6719.     to request a file name and load DSZ.
  6720.  
  6721.         Name:        Upload using YMODEM
  6722.         Subdirectory:    (whatever subdirectory DSZ/DSZUP occupies)
  6723.         Program:        (leave this field blank)
  6724.         Script:        DSZUP.CMD
  6725.  
  6726.  
  6727.     The script DSZUP.CMD could be written:
  6728.     ------------------------------------------------------------------
  6729.     MESSAGE "^MEnter the upload file name: "
  6730.     GET S0            ; Read keyboard
  6731.     COMPARMS S1        ; read current settings
  6732.     S2 =  "DSZ.COM port " * S1(14:14) * " sb " * S0 ; ask for YMODEM
  6733.     RUN S2            ; Load and run DSZ
  6734.     ------------------------------------------------------------------
  6735.     Note: change " sb " to " sz " for ZMODEM
  6736.     ------------------------------------------------------------------
  6737.  
  6738.  
  6739.     DSZ defaults to COM1 and your current port rate.  The above scripts
  6740.     adjust for the comm port you're using.
  6741.  
  6742.  
  6743.     NOTE: DSZ is user supported.  If you use it, please register it!
  6744.     DSZ may be found on most bulletin boards, and on every major system.
  6745.     Registration information is provided with every release of DSZ.
  6746.  
  6747.  
  6748.     NOTE: More functional scripts for invocation of DSZ are included in
  6749.     the scripts archive file released with COM-AND.  A pop-up window is
  6750.     used to query the file name, and so on.
  6751.  
  6752.  
  6753.  
  6754.  
  6755.  
  6756.  
  6757.  
  6758.  
  6759.  
  6760.  
  6761.  
  6762.  
  6763.  
  6764. Version 2.9: 921203                           Appendices
  6765.  
  6766. COM-AND: IBM PC Communications Script Language                 Page 120
  6767.  
  6768.  
  6769. D.    Encoded music
  6770.  
  6771.  
  6772.     Beginning with version 2.3, COM-AND uses encoded music strings for
  6773.     several different purposes:
  6774.  
  6775.     .  If the file COM-AND.TUN exists on the default drive:subdirectory
  6776.        (or on the COM-AND= drive:subdirectory), and it contains a valid
  6777.        encoded music string (not to exceed 40 notes), COM-AND uses the
  6778.        encoded string for its alarm.
  6779.  
  6780.     .  The alarm tune may be changed with a "SET TUNE" command through
  6781.        a script file.  The new alarm tune holds until it is changed,
  6782.        or until COM-AND is terminated.
  6783.  
  6784.     .  A script may PLAY an encoded music string during its execution
  6785.        (up to 80 notes).
  6786.  
  6787.     .  An escape sequence to play music has been implemented (for some
  6788.        RBBS boards).  The escape sequence is "ESC [M <music string> ^N"
  6789.        allowing up to 255 characters for the <music string>.
  6790.  
  6791.  
  6792.     Music strings are encoded using the BASICA 2.0 PLAY statement syntax.
  6793.     Commands are single characters, followed by one or more parameters.
  6794.     Blanks and commas are allowed for readability.    Case is not signifi-
  6795.     cant.  Commands are:
  6796.  
  6797.     .  A through G:  Play a note in the current octave
  6798.  
  6799.        A note command plays a note in the current octave.  It may be
  6800.        optionally followed by: (1) # (sharp), + (sharp), and - (flat),
  6801.        (2) a duration value (1 through 64, see "L" below),  and (3) one
  6802.        or more periods (dotting) extending the duration by 3/2.  If no
  6803.        duration number is specified the duration is the current default
  6804.        (set by "L", beginning at 4 with each string).  Example:
  6805.  
  6806.         A-16    A-flat in the current octave (sixteenth note)
  6807.  
  6808.        Blanks and commas ARE NOT allowed within the note declaration;
  6809.        e.g. no blank should occur between the command and a flat/sharp.
  6810.  
  6811.  
  6812.  
  6813.  
  6814.  
  6815.  
  6816.  
  6817.  
  6818.  
  6819. Version 2.9: 921203                           Appendices
  6820.  
  6821. COM-AND: IBM PC Communications Script Language                 Page 121
  6822.  
  6823.  
  6824. D.    Encoded music (continued)
  6825.  
  6826.  
  6827.     .  O #        Set the current octave
  6828.  
  6829.        There are 7 octaves, numbered 0 through 6.  Middle-C begins octave
  6830.        number 3.  Each string defaults at the start to octave number 4.
  6831.  
  6832.     .  >        Raise the octave by 1
  6833.  
  6834.        The current octave is raised with this command.
  6835.  
  6836.     .  <        Lower the octave by 1
  6837.  
  6838.        The current octave is lowered with this command.
  6839.  
  6840.     .  N #        Play note number 0-84
  6841.  
  6842.        Each octave contains 12 notes (C,C#/D-,D,D#/E-, etc).  Notes are
  6843.        numbered from the 0th octave beginning with 1.  0 is a rest.
  6844.        Note numbers may be followed by duration (blank separated from
  6845.        the note number) and dotting as in the note command.  Example:
  6846.  
  6847.         N36 4.    Middle-C, 3/8ths (dotted quarter)
  6848.  
  6849.     .  L #        Set default duration for following notes
  6850.  
  6851.        The duration of a note is specified as a number, 1 through 64.
  6852.        L1 is a whole note, L2 is a half note, L3 is a triplet, L4 is
  6853.        a quarter note, and so on.  The actual duration (in time) for
  6854.        notes is set through the T (Tempo) command, below.
  6855.  
  6856.     .  P        Pause (rest)
  6857.  
  6858.        Rests may be encoded, using this command with duration and
  6859.        dotting as with the note command.  Example:
  6860.  
  6861.         P1.    Pause for a whole and a half
  6862.  
  6863.     .  T #        Tempo (number of quarter notes per minute)
  6864.  
  6865.        Tempo is specified as a count of quarter notes per minute.  The
  6866.        tempo is allowed to range between 32 and 255, defaulting to 120.
  6867.  
  6868.  
  6869.  
  6870.  
  6871.  
  6872.  
  6873.  
  6874. Version 2.9: 921203                           Appendices
  6875.  
  6876. COM-AND: IBM PC Communications Script Language                 Page 122
  6877.  
  6878.  
  6879. D.    Encoded music (continued)
  6880.  
  6881.  
  6882.     .  MN        Normal
  6883.  
  6884.        Each note plays 7/8ths of the time specified (1/8th silence).
  6885.  
  6886.     .  MS        Staccato
  6887.  
  6888.        Each note plays 3/4s of the time specified (1/4 period silence).
  6889.  
  6890.     .  ML        Legato
  6891.  
  6892.        Each note plays the full period specified.
  6893.  
  6894.  
  6895.     Each encoded music string is an entity itself (with the exception of
  6896.     the PLAY statement, see below).  Defaults are reset at the beginning
  6897.     of each string.  Defaults are:    T120,O4,L4,MN For example, the
  6898.     DRAGNET "dum-dee-dum dum" might be played:
  6899.  
  6900.         PLAY "ms t250 o2 c2d8e-cp4g-1 p2 >c2d8e-cp4g-1 p2"
  6901.  
  6902.  
  6903.     PLAY statements, by default, also conform to this rule.  However,
  6904.     the SET MULTI statement controls defaulting for subsequent PLAY
  6905.     statements (within the current script).  MULTI is OFF by default;
  6906.     tempo, mode, etc are defaulted for every statement (as above).    When
  6907.     MULTI is ON, no defaults are used, and tempo, mode, etc hold across
  6908.     PLAY statements.
  6909.  
  6910.  
  6911.  
  6912.  
  6913.  
  6914.  
  6915.  
  6916.  
  6917.  
  6918.  
  6919.  
  6920.  
  6921.  
  6922.  
  6923.  
  6924.  
  6925.  
  6926.  
  6927.  
  6928.  
  6929. Version 2.9: 921203                           Appendices
  6930.  
  6931. COM-AND: IBM PC Communications Script Language                 Page 123
  6932.  
  6933.  
  6934. E.    File transfer error numbers
  6935.  
  6936.  
  6937.     COM-AND reports file transfer errors with a number and an explanation
  6938.     on the screen.    When an error is logged to the call-log, however,
  6939.     COM-AND only logs a number.  Error numbers are:
  6940.  
  6941.     DOS errors:
  6942.  
  6943.      1  Invalid function number (from INT 21H)
  6944.      2  File not found
  6945.      3  Path not found
  6946.      4  Too many open files (no handles left)
  6947.      5  Access denied
  6948.      6  Invalid Handle
  6949.      7  Memory control blocks destroyed
  6950.      8  Insufficient memory
  6951.      9  Invalid Memory block address
  6952.     10  Invalid environment
  6953.     11  Invalid format
  6954.     12  Invalid access code
  6955.     13  Invalid data
  6956.     14  Short write.  Disk Full?  Error # generated here
  6957.     15  Invalid drive specified
  6958.     16  Attempted to remove current directory
  6959.     17  Not same device
  6960.     18  No more files
  6961.  
  6962.  
  6963.  
  6964.  
  6965.  
  6966.  
  6967.  
  6968.  
  6969.  
  6970.  
  6971.  
  6972.  
  6973.  
  6974.  
  6975.  
  6976.  
  6977.  
  6978.  
  6979.  
  6980.  
  6981.  
  6982.  
  6983.  
  6984. Version 2.9: 921203                           Appendices
  6985.  
  6986. COM-AND: IBM PC Communications Script Language                 Page 124
  6987.  
  6988.  
  6989. E.    File transfer error numbers (continued)
  6990.  
  6991.  
  6992.     Program errors (internally generated):
  6993.  
  6994.      1  Other side cancelled        ; All protocols
  6995.      2  Handshake failed            ; ..
  6996.      3  Block sequence error        ; ..
  6997.      4  Complement error            ; ..
  6998.      5  Checksum mismatch            ; ..
  6999.      6  CRC mismatch            ; ..
  7000.      7  Short block received        ; ..
  7001.      8  We cancelled            ; ..
  7002.      9  NAK rcvd/xmitted - retrying     ; ..
  7003.     10  Timeout                ; ..
  7004.     11  Cancelled by operator        ; ..
  7005.     12  Timeout waiting for rcvr ACK    ; ..
  7006.     13  ENQ received during block        ; CISB
  7007.     14  Unrecognized command received    ; All protocols
  7008.     15  ETX received            ; ..
  7009.     16  Buffer overflow            ; ..
  7010.     17  Wait ACK received from CIS        ; ..
  7011.     18  Send initiate received        ; Kermit
  7012.     19  File Header received        ; All protocols
  7013.     20  Send-initiate sent            ; ..
  7014.     21  End-of-transfer sent        ; ..
  7015.     22  Other side not using batch        ; Batch-Ymodem
  7016.     23  File name not received, or errored    ; All protocols
  7017.     24  Negotiation packet received     ; CIS Quick-B
  7018.     25  Application inquiry packet received ; CIS Quick-B
  7019.     26  Insufficent space for rcv        ; KERMIT/Batch YMODEM
  7020.     27  Carrier has been dropped        ; All protocols
  7021.     28  ZMODEM frame end            ; ZMODEM (internal error)
  7022.     29  ZMODEM encryption requested     ; ZMODEM
  7023.     30  ZMODEM file skipped         ; ZMODEM
  7024.     31  Waiting recovery            ; B+/ZMODEM (internal error)
  7025.     32  BPlus recovery refused        ; B+ (internal error)
  7026.  
  7027.  
  7028.  
  7029.  
  7030.  
  7031.  
  7032.  
  7033.  
  7034.  
  7035.  
  7036.  
  7037.  
  7038.  
  7039. Version 2.9: 921203                           Appendices
  7040.  
  7041. COM-AND: IBM PC Communications Script Language                 Page 125
  7042.  
  7043.  
  7044. F.    EBL (Extended Batch Language)
  7045.  
  7046.  
  7047.     Extended Batch Language (EBL) is a command programming language used
  7048.     as a direct replacement of DOS batch files.  It may also be used in
  7049.     conjunction with DOS batch files.
  7050.  
  7051.  
  7052.     A superb example of EBL's power may be seen in the system SIGCOM,
  7053.     which is a communications system for use in the IBMSIG on UNISON
  7054.     (originally created for The SOURCE).  SIGCOM uses EBL to integrate
  7055.     COM-AND with the editor EDWIN and Vern Buerg's LIST.
  7056.  
  7057.  
  7058.     One of the unique features of EBL is its global variables ( %A..%O ).
  7059.     String or numerical values may be assigned to the global variables
  7060.     through EBL batch files.  Once a value is assigned to one of these 15
  7061.     variables it is accessible to other programs run through EBL until
  7062.     it is reassigned.  This powerful feature allows parameters to be
  7063.     passed from one EBL-aware program or batch to another.    COM-AND
  7064.     makes these global variables available for use in script files
  7065.     through the EBL script command.  The global variables are much more
  7066.     useful than variables in the DOS environment since the global
  7067.     variables are not dependent on whether they are assigned in a child
  7068.     or parent process.
  7069.  
  7070.  
  7071.     Global variables may be set in EBL through COM-AND and then be
  7072.     available to other programs run through other COM-AND script files,
  7073.     or run from DOS after exiting COM-AND.    This is not true of normal
  7074.     DOS environment variables.  In a multi-tasking environment such as
  7075.     DESQview each window has its own DOS environment and there is no
  7076.     convenient way to pass DOS environment variables from one window to
  7077.     another.  With the COM-AND EBL command the capability exists to pass
  7078.     data from one window to COM-AND in another window through EBL.
  7079.  
  7080.  
  7081.     The Extended Batch Language (EBL)may be obtained from SEAWARE Cor-
  7082.     poration, P.O.    Box 1656, Delray Beach, FL 33444, 800-634-8188 or
  7083.     407-392-2046.  Registration fee is $49.  Extended Batch Language is
  7084.     copyrighted by Seaware Corp.  1982,83,84,85,86,87.
  7085.  
  7086.  
  7087.     The latest version of SIGCOM, a communication system for the UNISON
  7088.     system and its IBM Special Interest Group (IBMSIG), is available
  7089.     from Mike Todd on UNISON via the ID MIKETODD or the IBMSIG EXCHANGE
  7090.     topics in PARTI for details on downloading or having diskettes
  7091.     mailed to your door.
  7092.  
  7093.  
  7094. Version 2.9: 921203                           Appendices
  7095.  
  7096. COM-AND: IBM PC Communications Script Language                 Page 126
  7097.  
  7098.  
  7099. G.    Manual settings and scripts
  7100.  
  7101.  
  7102.     1. Alt-S (Setup window)
  7103.  
  7104.        1)  Modem init string       SET MINIt <str>           _MINI
  7105.        2)  Modem dial prefix       SET DPREfix <str>           _DPRE
  7106.        3)  Modem dial suffix       SET DSUFfix <str>           _DSUF
  7107.        4)  Hang-up string           SET MHANg <str>           _MHAN
  7108.        5)  Escape string           SET MESCape <str>           _MESC
  7109.        6)  Connect string           SET MCONnect <str>           _MESC
  7110.        7)  Call log file           CLOG OPEN <str>           _CLFI
  7111.        8)  Dialing directory       DLOAD <str>               _DIRF
  7112.        9)  Macro directory           MLOAD <str>               _MACF
  7113.        10) RLE temp file           -----               -----
  7114.        11) Accessory direc           ALOAD <str>               _ACCF
  7115.        12) Backscreen Buffer       SET BKSC #               _BKSC
  7116.        13) Break delay           SET BREAK #               _BREA
  7117.        14) Alarm duration           SET ATIME #               _ATIM
  7118.        15) Modem character delay       SET MDELay #            _MDEL
  7119.        16) Reconnect delay           SET RDELay #            _RDEL
  7120.        17) Chat window size        SET CHLInes #           _CHLI
  7121.        18) Mouse vertical           SET VMOUse #            _VMOU
  7122.        19) Mouse horizontal        SET HMOUse #            _HMOU
  7123.        20) Mouse dbl click interval    SET DBLCLICK #           _DBLC
  7124.        21) Bell tone           SET BELL #               _BELL
  7125.        22) Modem delay character       SET MDCHAR #            _MDCH
  7126.        23) Xfer screen update       SET XSUI #               _XSUI
  7127.  
  7128.        24) Save these values       UPDATE (*)               RESET
  7129.  
  7130.  
  7131.        (*) Note: UPDATE and RESET do not apply to these settings alone.
  7132.            Both commands (UPDATE and RESET) apply to ALL Alt-S, Alt-O,
  7133.            Alt-P, Alt-K, Alt-J settings.  RESET further closes and re-
  7134.            opens the comm port.
  7135.  
  7136.  
  7137.  
  7138.  
  7139.  
  7140.  
  7141.  
  7142.  
  7143.  
  7144.  
  7145.  
  7146.  
  7147.  
  7148.  
  7149. Version 2.9: 921203                           Appendices
  7150.  
  7151. COM-AND: IBM PC Communications Script Language                 Page 127
  7152.  
  7153.  
  7154. G.    Manual settings and scripts (continued)
  7155.  
  7156.  
  7157.     2. Alt-O (Options window)
  7158.  
  7159.        1)  Echo received characters    SET DUPLEX HALF!FULL        _DUPL
  7160.        2)  Mask received characters    SET MASK ON!OFF           _MASK
  7161.        3)  Keyboard display        SET KBDBuf ON!OFF           _KBDB
  7162.        4)  Chat mode           SET CHAT ON!OFF           _CHAT
  7163.        5)  Suppress blank lines       SET BSUPpress ON!OFF        _BSUP
  7164.        6)  Alarm noise           SET ALARM ON!OFF           _ALAR
  7165.        7)  Exit query (Alt-X)       SET EXQUery ON!OFF           _EXQU
  7166.        8)  Mark transcript           LOG MARKED ON!OFF           _LOGM
  7167.        9)  Initial advertisement       SET ADVERT ON!OFF           _ADVE
  7168.        10) Use BIOS for screen saves   SET SWRITE BIOS!DIRECT      _SWRI
  7169.        11) Use DOS for screen writes   SET SWRITE DOS!BIOS!DIRECT  _SWRI
  7170.        12) Display control characters  SET CDISPlay ON!OFF           _CDIS
  7171.        13) Software flowctl (XON/XOFF) SET FLOW ON!OFF           _FLOW
  7172.        14) Unidirectional hdwe flowctl SET HARD ON!OFF           _HARD
  7173.        15) Bidirectional hdwe flow ctl SET RTSF ON!OFF           _RTSF
  7174.        16) Drop DTR to hangup       SET DROP ON!OFF           _DROP
  7175.        17) Init modem after hangup       SET INAF ON!OFF           _INAF
  7176.        18) Respect modem CD        SET CDREspect ON!OFF        _CDRE
  7177.        19) Translate (in and out)       SET TRANslate ON!OFF        _TRAN
  7178.        20) Keyboard remapping       SET REMAP ON!OFF           _REMA
  7179.        21) Nondestructive bksp       SET BACK IN (NOND!DEST)     _BSIN
  7180.        22) Send DELETE as bksp       SET BACK OUT (BACK!DELE)    _BSOU
  7181.        23) CR -> CRLF in display       SET CR CR!CRLF           _CRLF
  7182.        24) Call logging on           SET CLOG ON!OFF           _CLOG
  7183.        25) On screen clock           SET CLOCK ON!OFF           _CLOC
  7184.        26) Suppress bells           SET QUIET ON!OFF           _QUIE
  7185.        27) Menu mode           SET MENUMODE ON!OFF           _MENU
  7186.        28) Suspend comm during disk    SET PCJR ON!OFF           _PCJR
  7187.        29) Capture/display RLE files   SET RLEOk ON!OFF           _RLEO
  7188.        30) Allow MUSIC strings       SET MUSIC ON!OFF           _MUSI
  7189.        31) Allow REMOTE commands       SET REMOTE ON!OFF           _REMO
  7190.        32) Set slow transfer sends       SET SLOW ON!OFF           _SLOW
  7191.        33) Auto ZMODEM download       SET ZMODEM AUTO ON!OFF      _ZAUT
  7192.        34) ZMODEM download recovery    SET ZMODEM RECOVER ON!OFF   _ZREC
  7193.        35) BPlus download recovery       SET BPLUS RECOVER ON!OFF    _BREC
  7194.        36) Override Alt-D speed       SET DDOV ON!OFF           _DDOV
  7195.  
  7196.        37) Save these values       UPDATE (*)               RESET
  7197.  
  7198.        (*) Note: UPDATE and RESET do not apply to these settings alone.
  7199.            Both commands (UPDATE and RESET) apply to ALL Alt-S, Alt-O,
  7200.            Alt-P, Alt-K, Alt-J settings.  RESET further closes and re-
  7201.            opens the comm port.
  7202.  
  7203.  
  7204. Version 2.9: 921203                           Appendices
  7205.  
  7206. COM-AND: IBM PC Communications Script Language                 Page 128
  7207.  
  7208.  
  7209. G.    Manual settings and scripts (continued)
  7210.  
  7211.  
  7212.     3. Alt-P (Parameters window)
  7213.  
  7214.        1)  300               SET BAUDRATE 300           _PARM
  7215.        2)  1200               SET BAUDRATE 1200         "
  7216.        3)  2400               SET BAUDRATE 2400         "
  7217.        4)  4800               SET BAUDRATE 4800         "
  7218.        5)  9600               SET BAUDRATE 9600         "
  7219.        6)  14.4k               SET BAUDRATE 14K         "
  7220.        7)  19.2k               SET BAUDRATE 19k         "
  7221.        8)  38.4k               SET BAUDRATE 38k         "
  7222.        9)  57.6k               SET BAUDRATE 57k         "
  7223.        10) 115k               SET BAUDRATE 115k         "
  7224.        11) E,7,1               SET (PARITY, DATA, STOP)     "
  7225.        12) N,8,1               SET (PARITY, DATA, STOP)     "
  7226.        13) Even               SET PARITY EVEN         "
  7227.        14) Odd               SET PARITY ODD         "
  7228.        15) None               SET PARITY NONE         "
  7229.        16) 7 bits               SET DATABITS 7         "
  7230.        17) 8 bits               SET DATABITS 8         "
  7231.        18) 1 bit               SET STOPBITS 1         "
  7232.        19) 2 bits               SET STOPBITS 2         "
  7233.        20) COM1               SET PORT COM1         "
  7234.        21) COM2               SET PORT COM2         "
  7235.        22) COM3               SET PORT COM3         "
  7236.        23) COM4               SET PORT COM4         "
  7237.        24) Set base/IRQ           SET COMBASE;    COMBASE <port> Nx
  7238.                        SET COMVECT;    COMVEC  <port> Nx
  7239.        25) Save               UPDATE (*, see Alt-S)       RESET
  7240.  
  7241.  
  7242.  
  7243.  
  7244.  
  7245.  
  7246.  
  7247.  
  7248.  
  7249.  
  7250.  
  7251.  
  7252.  
  7253.  
  7254.  
  7255.  
  7256.  
  7257.  
  7258.  
  7259. Version 2.9: 921203                           Appendices
  7260.  
  7261. COM-AND: IBM PC Communications Script Language                 Page 129
  7262.  
  7263.  
  7264. G.    Manual settings and scripts (continued)
  7265.  
  7266.  
  7267.     4. Alt-K (KERMIT defaults window)
  7268.  
  7269.        1)  Mark character           SET KERMIT MARK #           _KMAR
  7270.        2)  Number of pads           SET KERMIT PADNUM #           _KNUM
  7271.        3)  Pad character           SET KERMIT PADCHAR #        _KPAD
  7272.        4)  Packet terminator       SET KERMIT EOLCHAR #        _KEOL
  7273.        5)  Control quote           SET KERMIT CQUOTE #           _KCQU
  7274.        6)  Binary quote           SET KERMIT 8QUOTE #           _K8QU
  7275.        7)  Check field len           SET KERMIT BLOCKCHECK 1!2!3 _KCHK
  7276.        8)  Compression flag        SET KERMIT REPEAT #           _KREP
  7277.        9)  Max window size           SET KERMIT WINDOW #           _KWIN
  7278.  
  7279.        10) Reset to default values       -----
  7280.        11) Save current values       UPDATE  (*, see Alt-S)      RESET
  7281.  
  7282.  
  7283.     5. Alt-J (Colors window)
  7284.  
  7285.        1)  Color               SET COLOR ON!OFF           _COLO
  7286.        2)  Text foreground           COLOR <attr>, SET TEXT      _TEXT
  7287.        3)  Text background           "             "               "
  7288.        4)  Menu foreground           SET DEFAULT <attr>           _DEFA
  7289.        5)  Menu background           "                             "
  7290.        6)  Screen bar foreground       SET BAR <attr>           _BAR
  7291.        7)  Screen bar background       "                             "
  7292.  
  7293.        8)  Save these values       UPDATE (*, see Alt-S)       RESET
  7294.  
  7295.  
  7296.  
  7297.  
  7298.  
  7299.  
  7300.  
  7301.  
  7302.  
  7303.  
  7304.  
  7305.  
  7306.  
  7307.  
  7308.  
  7309.  
  7310.  
  7311.  
  7312.  
  7313.  
  7314. Version 2.9: 921203                           Appendices
  7315.  
  7316. COM-AND: IBM PC Communications Script Language                 Page 130
  7317.  
  7318.  
  7319. G.    Manual settings and scripts (continued)
  7320.  
  7321.  
  7322.     6. Help (General help list)
  7323.  
  7324.        F1        Accessories                   ACCESSORY #
  7325.        F2        Perform script              EXECUTE <string>
  7326.        F3        Current d:subdir            CHDIR <string>
  7327.        F4        DownLoad d:subdir (26 chars)    SET DLDIR <string>
  7328.        F5        ASCII Upload             SENDFILE ASCII <name>
  7329.        F6        ASCII Download              GETFILE ASCII <name>
  7330.        F7        Toggle transcript     LOG OPEN <str>, LOG CLOSE
  7331.        F8        Toggle KBD disp          SET KBDBuf ON!OFF
  7332.        F9        Hold transcript        LOG SUSPEND, LOG RESUME
  7333.        F10        This screen                      HELP
  7334.        PgUp     Upload a file             SENDFILE <method> ...
  7335.        PgDn     Download a file           GETFILE <method> ...
  7336.        Alt-0/9    Execute a macro                MACRO #
  7337.        Alt-F10    DOS Gateway                     SHELL
  7338.        Alt-hyphen    Remote function keys         SET REMFTN ON!OFF
  7339.        Alt-equal    Menu mode               SET MENU ON!OFF
  7340.        Ctrl-End    Break                     BREAK [#]
  7341.        Ctrl-PrtSc    Toggle printer            SET PRINTER ON!OFF
  7342.        Alt-A    Toggle Chat mode           SET CHAT ON!OFF
  7343.        Alt-B    Redisplay                     -----
  7344.        Alt-C    Clear screen                  CLEAR <attr>
  7345.        Alt-D    Dial                        DIAL #
  7346.        Alt-E    Toggle echo              SET DUPLEX FULL!HALF
  7347.        Alt-F    File directory                       DIR
  7348.        Alt-G    Toggle blank-lines           SET BSUP ON!OFF
  7349.        Alt-H    Hang up                     HANGUP
  7350.        Alt-I    Program info                VERSION Sx
  7351.        Alt-J    Set screen colors               <above>
  7352.        Alt-K    Set KERMIT parms               <above>
  7353.        Alt-L    Toggle 25/43 lines            SET 25, SET 43
  7354.        Alt-M    Define a macro              SET MACRO # <string>
  7355.        Alt-N    Encrypt/Decrypt       ENCRYPT ..., DECRYPT ...
  7356.        Alt-O    Set options                   <above>
  7357.        Alt-P    Set comm params                <above>
  7358.        Alt-Q    Editor                   EDIT <filename>
  7359.        Alt-R    Redial last number                  DIAL
  7360.        Alt-S    Initial values                   <above>
  7361.        Alt-T    Time(s) and alarm             SET ALARM
  7362.        Alt-U    Annotate call log             CLOG <string>
  7363.        Alt-V    Emulation              EMULATE <method>
  7364.        Alt-W    Playback                 TYPE <string>
  7365.        Alt-X    Terminate program                   BYE
  7366.        Alt-Z    Toggle 7bit mask           SET MASK ON!OFF
  7367.  
  7368.  
  7369. Version 2.9: 921203                           Appendices
  7370.  
  7371. COM-AND: IBM PC Communications Script Language                 Page 131
  7372.  
  7373.  
  7374. H.    STACK and Macro keycodes
  7375.  
  7376.  
  7377.     COM-AND application keystrokes may be created in a script itself.
  7378.     The script must (1) turn off the keyboard, (2) stack the keystrokes
  7379.     and (3) terminate the script.  For example, making a script:
  7380.  
  7381.          SET TTHRU OFF        ; Turn off keyboard
  7382.          STACK "^@<SOURCE!"         ; Stack command to invoke F2
  7383.          EXIT            ; Terminate script to execute
  7384.  
  7385.     actually invokes the F2 (execute script) window, and passes the
  7386.     name "SOURCE" with a terminating carriage return to the F2 window.
  7387.     The ^@ indicates  the following character is interpreted as an
  7388.     'extended keystroke', i.e.  not-ASCII.  Extended characters are:
  7389.  
  7390.     Macro seq    Key     Macro seq      Key         Macro seq      Key
  7391.     ---------    ---     ---------    -----         ---------    -----
  7392.     ^@;          F1     ^@^^    Alt-A         ^@1    Alt-N
  7393.     ^@<          F2     ^@1    Alt-B         ^@^X    Alt-O
  7394.     ^@=          F3     ^@.    Alt-C         ^@^Y    Alt-P
  7395.     ^@>          F4     ^@ (space) Alt-D         ^@^P    Alt-Q
  7396.     ^@?          F5     ^@^R    Alt-E         ^@^S    Alt-R
  7397.     ^@@          F6     ^@!    Alt-F         ^@^_    Alt-S
  7398.     ^@A          F7     ^@"        Alt-G        ^@^T       Alt-T
  7399.     ^@B          F8     ^@#    Alt-H         ^@^V    Alt-U
  7400.     ^@C          F9     ^@^W    Alt-I         ^@/    Alt-V
  7401.     ^@D         F10     ^@$    Alt-J         ^@^Q    Alt-W
  7402.     ^@I        PgUp     ^@%    Alt-K         ^@-    Alt-X
  7403.     ^@Q        PgDn     ^@&    Alt-L         ^@^U    Alt-Y
  7404.     ^@u     Ctl-End     ^@2    Alt-M         ^@,    Alt-Z
  7405.  
  7406.     Note, too, Alt-A (requiring "^^") is unprogrammable.  It may
  7407.     be entered as decimal 30 (use Alt and numeric pad keys).
  7408.  
  7409.  
  7410.     In the above example, the F2 key was represented by "^@<".  When the
  7411.     F2 key is pressed a window is opened and a search for all files *.CMD
  7412.     and *.ENF takes place.    In simpler terms, pressing the F2 key takes
  7413.     TIME.  COM-AND defines the ASCII value 255 as a short cut to execute
  7414.     a script.  The macro:  " SOURCE!" has the same effect, and doesn't
  7415.     open the script window.  If the first character following the 255 is
  7416.     ".", the text is executed as a single script command.  Otherwise,
  7417.     the text is interpreted as a script file name to execute.
  7418.  
  7419.  
  7420.  
  7421.  
  7422.  
  7423.  
  7424. Version 2.9: 921203                           Appendices
  7425.  
  7426. COM-AND: IBM PC Communications Script Language                 Page 132
  7427.  
  7428.  
  7429. I.    Dynamic String Variables
  7430.  
  7431.  
  7432.     With version 2.6, script authors may now ALLOCATE extra string
  7433.     variables in addition to the 30 static string variables always
  7434.     available.  The variables are used as V0,V1,...  and may be used
  7435.     in any statement now now supporting static string variables
  7436.     (S0,S1...).  There are a few differences, however.
  7437.  
  7438.     o    Allocated variables must be ALLOCATEd before they are used,
  7439.         once in a COM-AND session.  They do NOT necessarily need to
  7440.         be ALLOCATEd in the script using them, however.
  7441.     o    Allocated variables are NOT deallocated when a script ends.
  7442.     o    Allocated variables are NOT cleared when a script terminates.
  7443.         One script may set values and a second may read them.
  7444.     o    Allocated variables ARE deallocated when COM-AND terminates.
  7445.  
  7446.  
  7447.     Dynamic variables are allocated from free memory, over and above the
  7448.     memory used by COM-AND normally.  Therefore, not all PC installations
  7449.     allow dynamic allocation.  The ALLOCATE and LOAD ALLOCAT statements
  7450.     return SUCCESS/FAIL according to the result of the operation.  An
  7451.     author should only ALLOCATE as many variables as absolutely needed
  7452.     (limited to 100, maximum).
  7453.  
  7454.  
  7455.     Some large script systems ALLOCATE variables and expect the area to
  7456.     be available during an entire COM-AND session.    Other scripts have
  7457.     need for extended variables, but only during the single script's
  7458.     execution.  In a one-time case, the following is suggested:
  7459.  
  7460.     On initialization:
  7461.  
  7462.     DELETE "Script.dat"             ; Delete this script's save file
  7463.     STORE ALLOC "Script.dat"        ; Save current allocation, if any
  7464.     ALLOCATE <number>        ; Deallocate and allocate anew
  7465.     IF FAILED            ; If allocation failed
  7466.        MESS "Cannot allocate memory for variables"
  7467.        ...
  7468.        ENDIF
  7469.  
  7470.     On termination:
  7471.  
  7472.     DEALLOCATE            ; Clear our allocation
  7473.     IF ISFILE "Script.dat"          ; If something previously allocated
  7474.        LOAD ALLOCATED "Script.dat"
  7475.        DELETE "Script.dat"          ; Delete same file
  7476.        ENDIF
  7477.  
  7478.  
  7479. Version 2.9: 921203                           Appendices
  7480.  
  7481. COM-AND: IBM PC Communications Script Language                 Page 133
  7482.  
  7483.  
  7484. I.    Dynamic String Variables (continued)
  7485.  
  7486.  
  7487.     For the author preparing a suite of scripts expecting dynamic
  7488.     variables be prepared prior to any one script's execution, we
  7489.     suggest the first dynamic variable (V0) contain a string identifying
  7490.     the script-set.  Each script of the suite expecting the prepared
  7491.     area might then execute the following as it begins:
  7492.  
  7493.     IF NOT ALLOCATED        ; Somebody dealloc'd us
  7494.        LOAD ALLOC "Suite.dat"       ; Retrieve values from disc
  7495.        IF FAILED GOTO AllocErr    ; LOAD failed for some reason
  7496.        ENDIF
  7497.  
  7498.     IF NOT STRCMP V0 "My very own"
  7499.        LOAD ALLOC "Suite.dat"       ; Retrieve values from disc
  7500.        IF FAILED GOTO AllocErr    ; LOAD failed for some reason
  7501.        ENDIF
  7502.  
  7503.     ...                ; OK to proceed
  7504.  
  7505.  
  7506.     This technique demands the file carrying the dynamic variables be
  7507.     updated by individual scripts as they terminate.
  7508.  
  7509.  
  7510.     -------------------------------------------------------------------
  7511.     Note:  the test for an allocated area is performed here BEFORE a
  7512.     dynamic variable (V0) is referenced.  The dynamic variables are
  7513.     valid syntactically ONLY when an area is allocated.  Because the
  7514.     interpretor evaluates ALL components of a condition, the following
  7515.     syntax generates a syntax error when no area is allocated:
  7516.  
  7517.     IF NOT ALLOCATED or NOT STRCMP V0 "My very own"
  7518.        LOAD ALLOC "Suite.dat"       ; Retrieve values from disc
  7519.        IF FAILED GOTO AllocErr    ; LOAD failed for some reason
  7520.        ENDIF
  7521.  
  7522.  
  7523.     When "NOT ALLOCATED" is true, "NOT STRCMP V0 ..." is still executed.
  7524.     The reference to V0 in this case would therefore be a syntax error.
  7525.  
  7526.  
  7527.  
  7528.  
  7529.  
  7530.  
  7531.  
  7532.  
  7533.  
  7534. Version 2.9: 921203                           Appendices
  7535.  
  7536. COM-AND: IBM PC Communications Script Language                 Page 134
  7537.  
  7538.  
  7539. J.    Flow control methods
  7540.  
  7541.  
  7542.     Some variations on flow control are available through COM-AND.    The
  7543.     discussion here centers on the script commands controlling flow con-
  7544.     trol...  Note SOFT, HARD, and RTSF flow control default conditions
  7545.     may be set through Alt-O... whereas RTSD discipline is script-only.
  7546.  
  7547.  
  7548.     1) XON/XOFF flow control:
  7549.  
  7550.        SET SOFTFLOW ON
  7551.        SET HARDFLOW OFF        ; Default condition
  7552.        SET RTSDISCIPLINE ON     ; Default condition
  7553.        SET RTSFLOW OFF        ; Default condition
  7554.  
  7555.        This is the one everyone understands.  XOFFs are sent to tell the
  7556.        opposite side "whoa", and XON sent to say "have at it".
  7557.  
  7558.  
  7559.     2) Hardware flow control (unidirectional):
  7560.  
  7561.        SET SOFTFLOW OFF        ; Default condition
  7562.        SET HARDFLOW ON
  7563.        SET RTSDISCIPLINE ON     ; Default condition
  7564.        SET RTSFLOW OFF        ; Default condition
  7565.  
  7566.        This is the RS232 standard: COM-AND raises RTS before sending a
  7567.        character, and waits for the modem to raise CTS.  No provision
  7568.        is made for COM-AND to tell the modem "gimme a break, man".
  7569.  
  7570.  
  7571.     3) Hardware flow control (modified unidirectional):
  7572.  
  7573.        SET SOFTFLOW OFF        ; Default condition
  7574.        SET HARDFLOW ON
  7575.        SET RTSDISCIPLINE OFF
  7576.        SET RTSFLOW OFF        ; Default condition
  7577.        SET RTS ...            ; As needed, dynamically
  7578.  
  7579.        This is a curiosity implemented for some interesting devices
  7580.        not discussed here.    This setting waits for CTS from the modem
  7581.        before sending, but gives control over RTS to a script.
  7582.  
  7583.  
  7584.  
  7585.  
  7586.  
  7587.  
  7588.  
  7589. Version 2.9: 921203                           Appendices
  7590.  
  7591. COM-AND: IBM PC Communications Script Language                 Page 135
  7592.  
  7593.  
  7594. J.    Flow control methods (continued)
  7595.  
  7596.  
  7597.     4) Hardware flow control (bidirectional):
  7598.  
  7599.        SET SOFTFLOW OFF        ; Default condition
  7600.        SET HARDFLOW OFF        ; Default condition
  7601.        SET RTSDISCIPLINE ON     ; Default condition
  7602.        SET RTSFLOW ON
  7603.  
  7604.        This is a bidirectional version of hardware flow control.  COM-AND
  7605.        waits for CTS before sending.  COM-AND raises and lowers RTS to
  7606.        signal its own buffer full conditions to the modem.
  7607.  
  7608.  
  7609.     5) Software AND hardware flow control (uni/bidirectional):
  7610.  
  7611.        SET SOFTFLOW ON
  7612.        SET HARDFLOW ON        ; RTSF overrides if RTSF ON
  7613.        SET RTSDISCIPLINE ON     ; Default condition
  7614.        SET RTSFLOW ...        ; ON or OFF (bi/unidirectional)
  7615.  
  7616.        Soft and Hard flow control (hardware flow control being either
  7617.        uni- or bidirectional) may be selected.  In most cases this is
  7618.        the desired setting when the modem requires a hard flow control,
  7619.        and the protocol/carrier requires a soft flow control.
  7620.  
  7621.  
  7622.     Almost all modems able to work at speeds above 2400 bps require
  7623.     bidirectional hardware flow control.  The INSTALL script (included
  7624.     with this release) is aware of the following modems requiring it:
  7625.  
  7626.        BocaModem 14.4k V.32bis
  7627.        Microcom 9624c
  7628.        Microcom 3296c
  7629.        MultiTech "Multimodem V.32" (possibly all MultiTechs supporting
  7630.               DTE speed different from DCE (modem to modem))
  7631.        PPI 9600 SA
  7632.        Telebit T2500
  7633.        US Robotics Courier 9600 HST
  7634.        USR Courier V.32
  7635.        Zoom VFX V32bis/V42bis
  7636.  
  7637.  
  7638.  
  7639.  
  7640.  
  7641.  
  7642.  
  7643.  
  7644. Version 2.9: 921203                           Appendices
  7645.  
  7646. COM-AND: IBM PC Communications Script Language                 Page 136
  7647.  
  7648.  
  7649. K.    Machine Language Subroutines
  7650.  
  7651.  
  7652.     The script statements OVERLAY and SCALL offer means to extend the
  7653.     script language at a script author's discretion.  Needless to say,
  7654.     not all machines have memory for OVERLAY, and development of an
  7655.     OVERLAY proper is difficult, dangerous, and frustrating.
  7656.  
  7657.  
  7658.     The OVERLAY statement loads an EXE or COM file as an overlay to COM-
  7659.     AND.  The size of the code/data being loaded as an overlay is limited
  7660.     by available memory.  [It is NOT limited to 64K.].  Therefore, a
  7661.     given overlay might not run on all systems...  only those with
  7662.     sufficient available memory.
  7663.  
  7664.  
  7665.     An overlay is terminated when COM-AND terminates.  It may be cleared
  7666.     by a script itself, with the statement "OVERLAY CLEAR".  We recom-
  7667.     mend a script using overlay(s) terminate its overlay when the func-
  7668.     tion is complete; the memory used for the overlay detracts from the
  7669.     space available for SHELL, and accessories.
  7670.  
  7671.  
  7672.     An overlay is entered with the SCALL instruction.  SCALL must specify
  7673.     the entry address relative to the first 64K of the overlay space.
  7674.     Thus, all entry points in an overlay MUST be in its first 64K.    The
  7675.     overlay is entered through a FAR CALL.    Thus, all entry points MUST
  7676.     be FAR procedures (with RETFs, not RETs).
  7677.  
  7678.  
  7679.     SCALL optionally specifies a parameter list to pass to the overlay
  7680.     procedure.  Parameters on this list are passed by reference through
  7681.     the stack.  Thus, all passed parameters MUST be simple variables
  7682.     (Nx, Sx, or Vx), and all passed parameters may be modified.  On
  7683.     entry to an overlay procedure, the stack looks like:
  7684.  
  7685.  
  7686.  
  7687.  
  7688.  
  7689.  
  7690.  
  7691.  
  7692.  
  7693.  
  7694.  
  7695.  
  7696.  
  7697.  
  7698.  
  7699. Version 2.9: 921203                           Appendices
  7700.  
  7701. COM-AND: IBM PC Communications Script Language                 Page 137
  7702.  
  7703.  
  7704. K.    Machine Language Subroutines (continued)
  7705.  
  7706.  
  7707.     +------------------------+
  7708.     !    Segment (16 bits)     !        {
  7709.     +---              ---+        {
  7710.     !             ! SP+4n+2  {
  7711.     +-------      -------+        {    1st parm if 1 or more passed
  7712.     !             !        {    .. n = # parameters passed
  7713.     +---              ---+        {
  7714.     !    Offset (16 bits)     ! SP+4n    {
  7715.     +------------------------+
  7716.     //            //        {     ...
  7717.     +------------------------+
  7718.     !    Segment (16 bits)     !        {
  7719.     +---              ---+        {
  7720.     !             ! SP+6     { / 3rd parm if 3 parms passed
  7721.     +-------      -------+        {    2nd parm if 2 parms passed
  7722.     !             !        { \ 1st parm if 1 parm passed
  7723.     +---              ---+        {
  7724.     !    Offset (16 bits)     ! SP+4     {
  7725.     +------------------------+
  7726.     !    Segment (16 bits)     !        {
  7727.     +---              ---+        {
  7728.     !             ! SP+2     {
  7729.     +--- Return address   ---+        {    FAR CALL return address
  7730.     !             !        {
  7731.     +---              ---+        {
  7732.     !    Offset (16 bits)     ! SP+0     {
  7733.     +------------------------+
  7734.  
  7735.  
  7736.     Approximately 700 bytes of stack space are available when an overlay
  7737.     is entered.  An overlay requiring more stack space must provide its
  7738.     own stack (and mechanism to switch to its own stack when an overlay
  7739.     procedure is entered).
  7740.  
  7741.  
  7742.     The overlay may or may not pop the passed parameter references from
  7743.     the stack on return.  COM-AND resets the stack pointer as required.
  7744.     Similarly, the overlay procedure does not have to concern itself with
  7745.     saving and restoring certain registers.  COM-AND preserves all
  7746.     registers across an SCALL.
  7747.  
  7748.  
  7749.  
  7750.  
  7751.  
  7752.  
  7753.  
  7754. Version 2.9: 921203                           Appendices
  7755.  
  7756. COM-AND: IBM PC Communications Script Language                 Page 138
  7757.  
  7758.  
  7759. K.    Machine Language Subroutines (continued)
  7760.  
  7761.  
  7762.     Parameters passed/returned to/from an overlay have the form:
  7763.  
  7764.     o    Nx: the reference Segment:offset points directly to the
  7765.         integer variable.  It is 16 bits, in the usual lsb,msb form.
  7766.  
  7767.     o    Sx,Vx: the reference Segment:offset points to character 0 of
  7768.         a string variable.  String variables are 80 bytes wide, null
  7769.         filled on the right if short.  Care must be take NOT to store
  7770.         past 80 characters, as there's NO telling what might be lost.
  7771.  
  7772.  
  7773.     Variables come from different segments.  The developer of a machine
  7774.     language subroutine cannot expect all passed variables to have the
  7775.     same segment reference.
  7776.  
  7777.  
  7778.     During an overlay, the BIOS comm support interrupt (for the port
  7779.     COM-AND has open) is redirected through COM-AND.  Thus, interrupt
  7780.     driven reads and writes (at any speed supported by COM-AND) may be
  7781.     performed in the overlay.  The BIOS 'open' for the comm port
  7782.     COM-AND opened has its function no-op'd.
  7783.  
  7784.  
  7785.     The development of a nontrivial overlay for a script is difficult,
  7786.     to say the least.  Obvious errors lock the machine up tight, or
  7787.     render the environment (and COM-AND) unstable.    Subtle errors may
  7788.     have the same effect, or worse.  Debugging an overlay is difficult.
  7789.  
  7790.  
  7791.     It is possible to develop an overlay using a high level language.
  7792.     However, each language compiler makes different provisions for the
  7793.     initialization of the environment.  An overlay, of course, does not
  7794.     automatically invoke the required initializations (e.g.  80x87 emu-
  7795.     lation library routines).  The developer of any high level language
  7796.     routine serving as a foreign subroutine must take this into account.
  7797.  
  7798.  
  7799.  
  7800.  
  7801.  
  7802.  
  7803.  
  7804.  
  7805.  
  7806.  
  7807.  
  7808.  
  7809. Version 2.9: 921203                           Appendices
  7810.  
  7811. COM-AND: IBM PC Communications Script Language                 Page 139
  7812.  
  7813.  
  7814. K.    Machine Language Subroutines (continued)
  7815.  
  7816.  
  7817.     Many uses for overlays require severe modifications be made to
  7818.     the machine state during the overlay's life (e.g. hooking interrupt
  7819.     vectors).  Such overlays MUST be terminated in an orderly manner
  7820.     before COM-AND itself is terminated, if the overlay's author expects
  7821.     to satisfy his or her audience.
  7822.  
  7823.  
  7824.     Adding to the difficulty, one script might load an overlay, and then
  7825.     another script replace it!  The script performing the replacement is
  7826.     probably written for a different purpose, and knows nothing of the
  7827.     critical nature of the first.
  7828.  
  7829.  
  7830.     The OVERLAY statement allows specification of an entry point to
  7831.     execute when the overlay is terminated.  The end-entry point is
  7832.     executed by COM-AND when 1) COM-AND terminates and the overlay is
  7833.     still loaded, 2) when COM-AND replaces the overlay with another, and
  7834.     3) when COM-AND unloads the overlay (with OVERLAY CLEAR).
  7835.  
  7836.  
  7837.     In the above cases, THE END-ENTRY POINT IS NOT EXECUTED when 1) it
  7838.     is never specified, 2) it has already been executed through an
  7839.     SCALL, or 3) it has been changed or removed through the SET OVENTRY
  7840.     statement.
  7841.  
  7842.  
  7843.     No parameters may be passed to the end-entry address when called.
  7844.  
  7845.  
  7846.     A considerate author can unload one overlay, load a new overlay, and
  7847.     then replace the original overlay with its end-entry point intact.
  7848.     Intrinsics "_OVERLAY" and "_OVENTRY" are provided for a script to
  7849.     'read' the file name and end-entry point for an existing overlay,
  7850.     and replace them.  String variables set to the above two intrinsics
  7851.     are directly usable in an overlay statement (see TALKER.CMD).
  7852.  
  7853.     ---------------------------------------------------------------------
  7854.     One final caution.  During the development of TALKER.OVL, this author
  7855.     found MicroSoft's EXEPACK to emit executable object not loadable as
  7856.     an overlay.  This author does not recommend use of EXEPACK on any
  7857.     overlay code until the code is proven to work, and then only with
  7858.     suspicion.
  7859.  
  7860.  
  7861.  
  7862.  
  7863.  
  7864. Version 2.9: 921203                           Appendices
  7865.  
  7866. COM-AND: IBM PC Communications Script Language                 Page 140
  7867.  
  7868.  
  7869. L.    CACMP
  7870.  
  7871.  
  7872.     Included with this release of COM-AND is a separate program, CACMP.
  7873.     Although CACMP has its own (separate document), it is mentioned
  7874.     here... if only to refer the interested reader to CACMP.DOC.
  7875.  
  7876.  
  7877.     CACMP is a diagnostic and preprocessor for COM-AND scripts.  CACMP
  7878.     may be used simply to perform syntax and semantic review of a COM-AND
  7879.     script, or it may be used to strip/preprocess scripts for COM-AND.
  7880.  
  7881.  
  7882.     CACMP syntactically and semantically verifies a given script file.
  7883.     In addition, it (optionally) performs the following functions:
  7884.  
  7885.         . Partially strip the script to output
  7886.         . Fully strip the script to output
  7887.         . Preprocess the script to output (for speed)
  7888.  
  7889.  
  7890.     The several levels of 'stripping', and 'preprocessing' are discussed
  7891.     in the CACMP documentation.  The interested reader is referred there.
  7892.  
  7893.  
  7894.  
  7895.  
  7896.  
  7897.  
  7898.  
  7899.  
  7900.  
  7901.  
  7902.  
  7903.  
  7904.  
  7905.  
  7906.  
  7907.  
  7908.  
  7909.  
  7910.  
  7911.  
  7912.  
  7913.  
  7914.  
  7915.  
  7916.  
  7917.  
  7918.  
  7919. Version 2.9: 921203                           Appendices
  7920.  
  7921. COM-AND: IBM PC Communications Script Language                 Page 141
  7922.  
  7923.  
  7924. M.    Script Language (Version 1.x)
  7925.  
  7926.  
  7927.     Version 1.x of PC-VCO included a primitive script facility.  That
  7928.     script language paralleled the original script language of PROCOMM
  7929.     version 1.x.  The only command whose meaning(s) changed was %F.  The
  7930.     %F paralleled the COM-AND Alt-P menu, as PROCOMM's %F paralleled its
  7931.     Alt-P menu.  Under most usages this made no difference.
  7932.  
  7933.     The introduction of the 2.x script processor retained the original
  7934.     script language as a subset.  A 1.x script command is signalled by a
  7935.     '%' sign.  The % must be followed by one, two or three alpha-numeric
  7936.     characters (no blanks) and possibly a quoted string (e.g.  "GENIE.
  7937.     CMD").  Text on a line not a part of a valid command is ignored.
  7938.     1.x script commands may not be mixed on a line with 2.x commands.
  7939.  
  7940.     As of version 2.7 of COM-AND the 1.x script processor is no longer
  7941.     available.  This appendix is provided for the decoding (should the
  7942.     need arise) of 1.x scripts.  The version 1.x command set was:
  7943.  
  7944.  ->    %A        Alarm
  7945.  ->    %B"str"         Default Drive/path
  7946.  ->    %C"nn"          Call directory number
  7947.  ->    %D"str"         DOS command
  7948.  ->    %En        Emulations:  unimplemented except for ANSI BBS
  7949.  *        %E0        Unimplemented
  7950.  *        %E1        Unimplemented
  7951.  *        %E2        Unimplemented
  7952.  *        %E3        Unimplemented
  7953.  *        %E4        Unimplemented
  7954.  *        %E5        Unimplemented
  7955.  *        %E6        Unimplemented
  7956.  ->        %E7        ANSI-BBS
  7957.  *        %E8        Unimplemented
  7958.  *        %E9        Unimplemented
  7959.  ->    %Fn        Comm Parms (equivalent to selection 'n' from Alt-P)
  7960.  ->    %G        Screen dump:  unimplemented
  7961.  ->    %H        Hang up
  7962.  ->    %I"str"         Wait for incoming string
  7963.  ->    %Jn        Send macro string 'n', n=0-9
  7964.  ->    %Ks        KERMIT server commands:  unimplemented
  7965.  *        %KMn        Unimplemented
  7966.  *        %KR        Unimplemented
  7967.  *        %KS"File_Name"  Unimplemented
  7968.  *        %KF        Unimplemented
  7969.  *        %KL        Unimplemented
  7970.  
  7971.  
  7972.  
  7973.  
  7974. Version 2.9: 921203                           Appendices
  7975.  
  7976. COM-AND: IBM PC Communications Script Language                 Page 142
  7977.  
  7978.  
  7979. M.    Script Language (Version 1.x, continued)
  7980.  
  7981.  
  7982.  ->    %Ls        Log commands
  7983.  ->        %LO "File_Name" Open log using "File_Name" (no default)
  7984.  ->        %LH        Hold logging
  7985.  ->        %LR        Resume logging
  7986.  ->        %LC        Close log
  7987.  ->    %M"str"         Display a message on the screen
  7988.  ->    %N"str"         Prompt for input and send
  7989.  ->    %Os        BIOS/Direct screen writes
  7990.  ->        %OB        Write to screen through BIOS
  7991.  ->        %OD        Write to screen direct
  7992.  ->    %P"nn"          Seconds to wait for an incoming string
  7993.  ->    %Q        Quit program
  7994.  ->    %R"nn"          Redial delay value
  7995.  ->    %Ss        Sound controls.
  7996.  ->        %SY        Allow alarm sounds
  7997.  ->        %SN        No alarm sounds (though alarm will delay)
  7998.  ->        %ST"nn"         Set delay for alarm (value in seconds)
  7999.  ->    %T"str"         Transmit string
  8000.  ->    %Us        Miscellaneous:    implemented as applicable
  8001.  ->        %U1        Clear screen
  8002.  *        %U2        Send CR as CR: unimplemented
  8003.  *        %U3        Send CR as CR/LF: unimplemented
  8004.  ->        %U4        Set full duplex (echoplex)
  8005.  ->        %U5        Set half duplex
  8006.  ->        %U6        Send Break signal
  8007.  *        %U7        Set line wrap on: unimplemented
  8008.  *        %U8        Set line wrap off: unimplemented
  8009.  *        %U9        Set Scroll on: unimplemented
  8010.  *        %U0        Set Scroll off: unimplemented
  8011.  ->    %Vs        Miscellaneous:    VCO specific subcommands
  8012.  *        %V0        Unimplemented (PC-VCO used for Voice)
  8013.  *        %V1        Unimplemented (PC-VCO used for Voice)
  8014.  *        %V2        Unimplemented (PC-VCO used for Voice)
  8015.         %V3        Blank line suppression on (Alt-G)
  8016.         %V4        Blank line suppression off (Alt-G)
  8017.         %V5        High bit masking on (Alt-Z)
  8018.         %V6        High bit masking off (Alt-Z)
  8019.         %V7        Chat mode on (Alt-A)
  8020.         %V8        Chat mode off (Alt-A)
  8021.         %V9        WXMODEM send allowed (not used now)
  8022.         %VA        WXMODEM send not allowed (not used now)
  8023.         %VB        WXMODEM receive allowed (not used now)
  8024.         %VC        WXMODEM receive not allowed (not used now)
  8025.         %VD"File_Name"  Unimplemented (PC-VCO FLB fname)
  8026.         %VE"File_Name"  Unimplemented (PC-VCO EXC fname)
  8027.  
  8028.  
  8029. Version 2.9: 921203                           Appendices
  8030.  
  8031. COM-AND: IBM PC Communications Script Language                 Page 143
  8032.  
  8033.  
  8034. M.    Script Language (Version 1.x, continued)
  8035.  
  8036.  
  8037.  ->    %Vs (continued)
  8038.  *        %VF        Unimplemented (PC-VCO use PLINK/CIS)
  8039.  *        %VG        Unimplemented (PC-VCO use GEnie/Delphi)
  8040.  ->    %W"nn"          Wait for a specified # seconds
  8041.  ->    %Xs        XMODEM receive/send
  8042.  ->        %XR"File_Name"
  8043.  ->        %XS"File_Name"
  8044.  ->    %Ys        ASCII Send
  8045.  *        %YP"nn"         Set pacing: unimplemented
  8046.  ->        %YT"File_name"  Transmit file_name using ASCII send
  8047.         %Y0"str"        Set host prompt character
  8048.         %Y1        Turn off host prompt character
  8049.         %Y2        Transmit linefeeds on
  8050.         %Y3        Transmit linefeeds off
  8051.         %Y4        Tab expansion on
  8052.         %Y5        Tab expansion off
  8053.         %Y6"nn"         Set intercharacter delay (in milliseconds)
  8054.  ->    %Zs        Translate tables:  unimplemented.
  8055.  *        %ZY        Translate table on:  unimplemented
  8056.  *        %ZN        Translate table off:  unimplemented
  8057.  
  8058.  
  8059.  
  8060.  
  8061.  
  8062.  
  8063.  
  8064.  
  8065.  
  8066.  
  8067.  
  8068.  
  8069.  
  8070.     Multiple 1.x commands may be placed on a single line.  SYNTAX errors
  8071.     are reported.  On 'end-of-file', COM-AND returns to the normal
  8072.     interactive mode (unless %Q is specified in the script).
  8073.     --------------------------------------------------------------------
  8074.     The notation '->' to the left of a script command indicates it IS
  8075.     a part of the PROCOMM script language.    Unmarked extensions provide
  8076.     unique COM-AND features to script file authors.
  8077.     --------------------------------------------------------------------
  8078.     The notation '*' to the left of a script command indicates it is
  8079.     unimplemented (but are accepted).  Commands marked 'unimplemented'
  8080.     are parsed and accepted by COM-AND, but not executed.
  8081.  
  8082.  
  8083.  
  8084. Version 2.9: 921203                           Appendices
  8085.  
  8086. COM-AND: IBM PC Communications Script Language                 Page 144
  8087.  
  8088.  
  8089. N.    Language Summary
  8090.  
  8091.  
  8092.     Version 2.1 of COM-AND included a script processor accepting scripts
  8093.     written for PROCOMM 2.4.2.  In addition, the script language was
  8094.     extended considerably (substring extraction, concatenation, ...).
  8095.  
  8096.  
  8097.     When PROCOMM Plus was released, COM-AND's script language was again
  8098.     extended, to include ASPECT 1.x as a subset.  Additional functions
  8099.     requested by COM-AND users were added, as well.  The resulting
  8100.     language syntax is summarized below.
  8101.  
  8102.  
  8103.     Between COM-AND 2.1 and COM-AND 2.2 a certain few instructions and
  8104.     usages did change, most notably the indexing of substrings.  COM-AND
  8105.     2.1 numbered characters in substrings from 1.  ASPECT added
  8106.     substring functions, but numbered characters from 0.  This author
  8107.     could not release a script language allowing both usages, and
  8108.     deferred to PCPlus.  For any inconvenience to COM-AND users, I
  8109.     apologize.
  8110.  
  8111.  
  8112.  
  8113.  
  8114.  
  8115.  
  8116.  
  8117.  
  8118.  
  8119.  
  8120.  
  8121.  
  8122.  
  8123.  
  8124.  
  8125.  
  8126.  
  8127.     -----------------------------------------------------------------
  8128.     The notation '->' to the left of a script command below indicates
  8129.     it IS compatible with the ASPECT script language.
  8130.  
  8131.     -----------------------------------------------------------------
  8132.     The notation '*' to the left of a script command indicates it
  8133.     is unimplemented (but accepted).  Commands marked 'unimplemented'
  8134.     are parsed and accepted by COM-AND.  SYNTAX errors in command
  8135.     formation are not necessarily reported.
  8136.  
  8137.  
  8138.  
  8139. Version 2.9: 921203                           Appendices
  8140.  
  8141. COM-AND: IBM PC Communications Script Language                 Page 145
  8142.  
  8143.  
  8144. N.    Language Summary (continued)
  8145.  
  8146.  
  8147.   Page     Syntax              Comment
  8148.   ------ ------------------------------- -----------------------------
  8149.   11:     ACCESSORY <string>         ; Execute accessory entry
  8150.   11: -> ADD Nx Ny Nz             ; Nz = Nx+Ny
  8151.   12: -> ALARM [<number>]         ; Sound alarm, time in seconds
  8152.   12:     ALOAD <string>          ; Load accessory directory file
  8153.   12:     ALLOCATE <number>         ; Allocate up to 100 variables
  8154.   12:     ANAME Sx <number>         ; Read acc dir entry name
  8155.   13:     APGM Sx <number>         ; Read acc dir program field
  8156.   13:     ASCRIPT Sx <number>         ; Read acc dir script field
  8157.   13: -> ASSIGN Sx <string>         ; Store a value into Sx
  8158.   13:     ASUBDIR Sx <number>         ; Read acc dir subdirectory field
  8159.   13: -> ATGET row col attr len Sx     ; GET performed with positioning
  8160.   14: -> ATOI Sx Nx             ; Convert string numeric to numeric
  8161.   14: -> ATSAY row col attr <string>     ; MESSAGE performed with positioning
  8162.   14:     ATSCR row col len Sx         ; Read screen at location for len
  8163.   14: -> BOX row col row col attr     ; Draw a box (clear within)
  8164.   15: -> BREAK [<number>]         ; Send break, time in ms
  8165.   15: -> BYE                 ; Exit script and pgm - leave DTR
  8166.   15: -> CASE (<string>!<number>)     ; Within SWITCH/ENDSWITCH
  8167.   15: -> CHDIR <string>          ; Change current d:\path
  8168.   16: -> CLEAR <attr>             ; Clear screen
  8169.   16:     CLOG OPEN <string>         ; Open call-logging file by name
  8170.   16:     CLOG CLOSE             ; Close call-logging
  8171.   16:     CLOG <string>             ; Write to call-log if open
  8172.   17:     COLOR <attr>             ; Set screen text color
  8173.   17:     COMBASE <port> Nx         ; Read base address for COMx
  8174.   17:     COMPARMS Sx             ; Read comm parms (bbbb,p,d,s,COMx)
  8175.   17:     COMVECTOR <port> Nx         ; Read vector number for COMx
  8176.   18:     CONCAT Sx [(##)!*] <string>     ; Concatenate text to Sx [at col ##]
  8177.   18: -> CONNECT             ; Exit script (terminal mode)
  8178.   18:     CRC <string> Nx         ; Compute buffer CRC
  8179.   19:     CTOI Sx Nx             ; Convert character to value
  8180.   19: -> CUROFF              ; Turn off cursor (EXIT turns on)
  8181.   19: -> CURON                 ; Turn on cursor (if off)
  8182.   19: -> CURSOR Nx Ny             ; Read cursor (Nx=row, Ny=col)
  8183.   19: -> CWHEN [(#)]             ; Clear when, # = 0,1,2,...9
  8184.   20: -> DATE Sx (0!1)             ; Read system date (0 -> mm/dd/yy)
  8185.   20:     DBOX row col row col attr     ; Draw double line box (clear)
  8186.   20:     DEALLOCATE             ; Deallocate dynamic variables
  8187.   20: -> DEC Nx              ; Decrement a numeric variable
  8188.   21:     DECRYPT <string><string><string>; Decrypt from, to, password
  8189.   21: -> DEFAULT             ; Within SWITCH/ENDSWITCH
  8190.  
  8191.  
  8192.  
  8193.  
  8194. Version 2.9: 921203                           Appendices
  8195.  
  8196. COM-AND: IBM PC Communications Script Language                 Page 146
  8197.  
  8198.  
  8199. N.    Language Summary (continued)
  8200.  
  8201.  
  8202.   Page     Syntax              Comment
  8203.   ------ ------------------------------- -----------------------------
  8204.   21:     DEFTIME <number>         ; Set WAITFOR, etc timeout in secs
  8205.   21:     DELETE <string>         ; Delete a file by name
  8206.   22: -> DIAL <string>             ; Dial dial directory entry (Alt-D)
  8207.   22: -> DIR <string>             ; Perform Alt-F directory function
  8208.   22:     DIRECTORY Sx [<number>]     ; Return dialing dir entry name
  8209.   23: -> DIV Nx Ny Nz             ; Nz = Nx/Ny
  8210.   23:     DLDIR Sx             ; Read current download d:subdir
  8211.   23:     DLOAD <string>          ; Load dialing directory file
  8212.   23:     DNUMBER Sx [<number>]         ; Read dialing entry phone number
  8213.   24:     DO                 ; Begin a DO-Loop clause (see UNTIL)
  8214.  
  8215.         DO ; Start loop here        ; Example
  8216.         ...                 ; Example
  8217.         UNTIL <condition>            ; Example
  8218.  
  8219.   25: -> DOS <string> [WAIT]         ; Perform a DOS command
  8220.   25:     DPARMS Sx [<number>]         ; Read dialing parms bbbb,p,d,s,e
  8221.   25:     DSCRIPT Sx [<number>]         ; Read dialing entry script
  8222.   26:     DWINDOW row,col,row,col     ; Set scrolling region coords
  8223.   26:     DWINDOW CLEAR             ; Reset scrolling region to original
  8224.   26:     EBL Sx <EBL var>         ; Read EBL global (%A-%O, &...)
  8225.   27:     EBLSET &<name> Sx         ; Write EBL extended variable
  8226.   27:     EDIT <file>             ; Open manual editor on <file>
  8227.   27: -> ELSE                 ; Within IF/ENDIF
  8228.   27:     ELSE statement          ; ENDIF not required this form
  8229.   27: -> EMULATE (TTY!ANSI!VIDTEX!VT100!VT52)
  8230.   28:     ENCRYPT <string><string><string> [SIM!AUT] ; From, to, password
  8231.   15: -> ENDCASE             ; Terminate CASE or DEFAULT clause
  8232.   35:     ENDFOR              ; Terminate a FOR Loop
  8233.   44: -> ENDIF                 ; Terminate an IF clause
  8234.   76: -> ENDSWITCH             ; Terminate a SWITCH clause
  8235.   82:     ENDWHILE             ; Terminate a WHILE clause
  8236.   28:     ENVIRON Sx <string>         ; Read environment variable value
  8237.   29: -> EXECUTE <string>         ; Chain to new script
  8238.   29: -> EXIT                 ; Terminate script (terminal mode)
  8239.   29: -> FATSAY row col attr <fmtstr> <parms> ; Fmttd MESS performed with pos
  8240.   30:     FATTR Sx!Nx <file>         ; Read file attributes
  8241.   31:     FCALL <file>             ; Call a file as a subroutine
  8242.   32: -> FCLOSEI             ; Close script input file
  8243.   32: -> FCLOSEO             ; Close script output file
  8244.   32:     FDATE Sx <file> [0!1]         ; Read file's date last modified
  8245.   32:     FFIRST Sx             ; Initialize wildcard search
  8246.  
  8247.  
  8248.  
  8249. Version 2.9: 921203                           Appendices
  8250.  
  8251. COM-AND: IBM PC Communications Script Language                 Page 147
  8252.  
  8253.  
  8254. N.    Language Summary (continued)
  8255.  
  8256.  
  8257.   Page     Syntax              Comment
  8258.   ------ ------------------------------- -----------------------------
  8259.   33: -> FGETC Sx             ; Read a character from a file
  8260.   33: -> FGETS Sx             ; Read a record from a file
  8261.   33: -> FIND Sx <string> [Nx]         ; Test for <string> in Sx
  8262.   34:     FNEXT    Sx [QUAL]         ; Read next file after FFIRST
  8263.   34: -> FOPENI Sx [TEXT!BINARY]     ; Open a file for input
  8264.   34: -> FOPENO Sx [TEXT!BINARY!APPEND]  ; Open a file for output
  8265.   35:     FOR Nx = <val> <val> [<val>]     ; FOR Loop (init, final, step)
  8266.  
  8267.         FOR Nx = <val> <val> [<val>]    ; Example
  8268.         ...                ; Example
  8269.         ENDFOR                ; Example
  8270.  
  8271.   36: -> FPUTC Sx             ; Write a character to a file
  8272.   36: -> FPUTS Sx             ; Write a record to a file
  8273.   36: -> FREAD Sx Nx Ny          ; Read a record (Nx may be literal)
  8274.   37:     FREE  Sx <string>         ; Read available space on <disc>
  8275.   37:     FRESTORE[I!O]             ; Restore position from last FSAVE
  8276.   37:     FRETURN             ; Return from an FCALL
  8277.   38:     FSAVE[I!O]             ; Save input/output file position
  8278.   38:     FSAVE[I!O] CLEAR         ; Clear stack of saved positions
  8279.   38:     FSAVE[I!O] SHIFT         ; Shift stack of saved pos down one
  8280.   38:     FSAVE[I!O] POP          ; Throw away last saved position
  8281.   38:     FSIZE Sx <file>         ; Read file size (7 digits)
  8282.   38:     FTIME Sx <file> [0!1]         ; Read file's time last modified
  8283.   39: -> FWRITE Sx Nx             ; Write a record (Nx may be literal)
  8284.   39: -> GET Sx [<number>]         ; Read keyboard, <number> = count
  8285.   40: -> GETFILE ASCII      <string>     ; Download: A.K.A. Buffer capture
  8286.   40:     GETFILE BPLUS             ; ..         CompuServe B+ protocol
  8287.   40: -> GETFILE BYMODEM         ; ..         Batch YMODEM (True YM)
  8288.   40: -> GETFILE BYMODEMG         ; ..         Streaming YMODEM
  8289.   40: -> GETFILE CISB             ; ..         CompuServe B-protocol
  8290.   40: -> GETFILE KERMIT          ; ..         Kermit or SuperKermit
  8291.   40:     GETFILE QUICKB          ; ..         CompuServe Quick B
  8292.   40: -> GETFILE RXMODEM  <string>     ; ..         Relaxed CRC/Chk XMODEM
  8293.   40: -> GETFILE WXMODEM  <string>     ; ..         Windowed XMODEM
  8294.   40: -> GETFILE XMODEM   <string>     ; ..         CRC or Checksum XMODEM
  8295.   40: -> GETFILE YMODEM   <string>     ; ..         Simple YMODEM (XMODEM1k)
  8296.   40:     GETFILE ZMODEM          ; ..         ZMODEM (batch)
  8297.   41: -> GOSUB <string>          ; Call a subroutine
  8298.   42: -> GOTO <string>             ; Branch (NOT into IF or SWITCH)
  8299.   43: -> HANGUP              ; Disconnect current call
  8300.       *  HELP                 ; Unimplemented
  8301.       *  HOST                 ; Unimplemented
  8302.  
  8303.  
  8304. Version 2.9: 921203                           Appendices
  8305.  
  8306. COM-AND: IBM PC Communications Script Language                 Page 148
  8307.  
  8308.  
  8309. N.    Language Summary (continued)
  8310.  
  8311.  
  8312.   Page     Syntax              Comment
  8313.   ------ ------------------------------- -----------------------------
  8314.   44:     IF [NOT] ALPHA Sx         ; Test for alpha char
  8315.   44:     IF [NOT] ALLOCATED         ; Test for dynamic variables
  8316.   44: -> IF [NOT] CONNECTED         ; Test modem carrier (CD)
  8317.   44:     IF [NOT] CONTROL Sx         ; Test for control char
  8318.   44: -> IF [NOT] EOF             ; Test for EOF on input file
  8319.   44:     IF [NOT] ERROR          ; Test last instruction
  8320.   44: -> IF [NOT] FAILURE         ; Test for NOT SUCCESS
  8321.   44:     IF [NOT] FCALLED         ; Test for FCALL return required
  8322.   44:     IF [NOT] FKEY             ; Test for function key pending
  8323.   44:     IF [NOT] FLAG [(#)]         ; Test FLAG variable
  8324.   44:     IF [NOT] FCALLED         ; Test for FCALL of script
  8325.   44:     IF [NOT] FIND Sx Sy [Nx]     ; Test for Sx within Sy
  8326.   44: -> IF [NOT] FOUND          ; Test last FIND statement
  8327.   44:     IF [NOT] FULL             ; Test if we have XOFFed host
  8328.   44: -> IF [NOT] HITKEY         ; Test for keypress pending
  8329.   44:     IF [NOT] ISDLFILE Sx         ; Test for file presence
  8330.   44: -> IF [NOT] ISFILE Sx         ; Test for file presence
  8331.   44:     IF [NOT] ISSCFILE Sx         ; Test for file presence
  8332.   44: -> IF [NOT] LINKED         ; Test for script executed via Alt-D
  8333.   44: -> IF [NOT] MONO             ; Test for monochrome adapter
  8334.   44:     IF [NOT] NULL Sx         ; Test for Sx blank or null
  8335.   44:     IF [NOT] NUMERIC Sx         ; Test for numeric character
  8336.   44:     IF [NOT] OVERLAY         ; Test for overlay loaded
  8337.   44:     IF [NOT] PRINTER         ; Test for PRINTER ON
  8338.   44:     IF [NOT] RECEIVE         ; Test for char pending on comm port
  8339.   44:     IF [NOT] SPECIAL Sx         ; Test for special character
  8340.   44:     IF [NOT] STRCMP Sx Sy         ; Test Sx = Sy (case sensitive)
  8341.   44: -> IF [NOT] SUCCESS         ; Test SUCCESS flag
  8342.   44:     IF [NOT] TRACE          ; Test for TRACE ON
  8343.   44: -> IF [NOT] WAITFOR         ; Test last WAITFOR statement
  8344.   44:     IF [NOT] XOFF             ; Test for XOFF condition
  8345.   44: -> IF [NOT] ZERO Nx         ; Test for Nx = 0
  8346.   44: -> IF [NOT] GT!LT!GE!LE!EQ Nx Ny     ; Test for Nx <condition> Ny
  8347.   44:     IF [NOT] NE Nx Ny         ; Test for not equal
  8348.   44:     IF [NOT] Nx NE!GT!LT!GE!LE!EQ Ny; Test for Nx <condition> Ny
  8349.  
  8350.         Usual form        Alternative form     Alternative form
  8351.       -------------------+--------------------+----------------------
  8352.       ->    IF condition |  IF condition stmt |  IF condition
  8353.           [stmts]     |              |     [stmts]
  8354.       ->    ELSE     |              |  ELSE statement
  8355.           [stmts]     |              |
  8356.       ->    ENDIF     | (not ASPECT form)  | (not ASPECT form)
  8357.  
  8358.  
  8359. Version 2.9: 921203                           Appendices
  8360.  
  8361. COM-AND: IBM PC Communications Script Language                 Page 149
  8362.  
  8363.  
  8364. N.    Language Summary (continued)
  8365.  
  8366.  
  8367.   Page     Syntax              Comment
  8368.   ------ ------------------------------- -----------------------------
  8369.   49: -> INC Nx              ; Increment a numeric variable
  8370.   49: -> INIT Nx <number>         ; Store a value into numeric var
  8371.   50:     INPUT Nx <address>         ; Machine level INPUT
  8372.   50:     ISDLFILE <string>         ; Test for presence of a dload file
  8373.   50: -> ISFILE <string>         ; Test for presence of a file
  8374.   51:     ISSCFILE <string>         ; Test for presence of a script file
  8375.   51: -> ITOA Nx Sx             ; Convert numeric to numeric string
  8376.   51:     ITOC Nx Sx             ; Convert value to character
  8377.       *  KERMSERV FINISH         ; Unimplemented
  8378.       *  KERMSERV GETFILE         ; Unimplemented
  8379.       *  KERMSERV LOGOUT         ; Unimplemented
  8380.       *  KERMSERV SENDFILE         ; Unimplemented
  8381.   52: -> KEYGET Sx             ; Read kbd ('a',esc='1b',F1='3b00')
  8382.   52: -> KFLUSH              ; Flush keyboard buffer
  8383.   52:     LD Sx <number>          ; Return long LD Dir string 1,2,3,4
  8384.   52:     LEGEND <string>         ; Write text to status line
  8385.   53:     LENGTH Sx Nx             ; Compute length of string
  8386.   53:     LJ Sx                 ; Left justify string variable
  8387.   53:     LOAD DEFAULT             ; Load default file data (RESET)
  8388.   53:     LOAD (DIAL!MACR!ACCE) <file>     ; Load file data
  8389.   53:     LOAD (STRING!NUMERIC!ALLOC!FSAVEI!FSAVEO) <file>
  8390.   53: -> LOCATE <number> <number>     ; Position cursor to <row> <col>
  8391.   54: -> LOG OPEN <string>         ; Open disk/PRN logging
  8392.   54: -> LOG CLOSE             ; Close disk/PRN logging
  8393.   54: -> LOG SUSPEND             ; Suspend disk/PRN logging
  8394.   54: -> LOG RESUME             ; Resume disk/PRN logging
  8395.   54:     LOG MARKED (ON!OFF)         ; Set/reset disk/PRN log timestamp
  8396.   54:     LOWER Sx             ; Lower case contents of Sx
  8397.   54: -> MACRO <num> [Sx]         ; Send/read macro <num> (Sx -> read)
  8398.   55:     MANUAL <number>         ; Invoke an interactive window
  8399.   55: -> MATGET row col attr len Sx     ; MGET performed with positioning
  8400.   56:     MCR Nx              ; Read the modem control register
  8401.   56: -> MDIAL <string>          ; Dial number in Sx manually
  8402.   56:     MDIR <string>             ; Create a subdirectory
  8403.   57: -> MESSAGE <string>         ; Write text to local console
  8404.   57: -> MGET Sx <num>             ; Read kbd masked, <num> = count
  8405.   57: -> MLOAD <string>          ; Load macro directory file
  8406.   58:     MSR Nx              ; Read the modem status register
  8407.   58: -> MUL Nx Ny Nz             ; Nz = Nx*Ny
  8408.   59:     Nx = expression         ; Compute a value and assign it
  8409.   60:     ON ESCAPE GOSUB <label>     ; Set action on operator escape
  8410.   60:     ON ESCAPE CLEAR         ; Clear escape action
  8411.  
  8412.  
  8413.  
  8414. Version 2.9: 921203                           Appendices
  8415.  
  8416. COM-AND: IBM PC Communications Script Language                 Page 150
  8417.  
  8418.  
  8419. N.    Language Summary (continued)
  8420.  
  8421.  
  8422.   Page     Syntax              Comment
  8423.   ------ ------------------------------- -----------------------------
  8424.   60:     ON SILENCE GOSUB <label>     ; Set action on receive timeout
  8425.   60:     ON SILENCE CLEAR         ; Clear receive timeout action
  8426.   60:     OUTPUT <address> Nx         ; Machine level OUTPUT
  8427.   62:     OVERLAY <file> [<addr>]     ; Load overlay, <addr> = end addr
  8428.   62:     OVERLAY CLEAR             ; Release overlay area
  8429.   62: -> PAUSE [<number>]         ; Pause for time in seconds
  8430.   62:     PERFORM <string>         ; Perform string as command
  8431.   62:     PLAY <string>             ; Play a basic encoded music string
  8432.   63:     PRESERVE Sx             ; Modify Sx to avoid (!,^,`) edits
  8433.   63: -> PRINTER (ON!OFF)         ; Turn printer copy ON/OFF
  8434.   63:     PRINT <string>          ; Send <string> to LP1 printer
  8435.   63: -> QUIT                 ; Terminate script (terminal mode)
  8436.   64:     RDIR <string>             ; Remove a subdirectory
  8437.   64:     READ Sx Nx Ny             ; Read a record (Nx=max,Ny=cnt read)
  8438.   65:     REDUCE Sx             ; Undouble doubled !s, ^s and `s
  8439.   64:     RENAME Sx Sy             ; Rename a file by name
  8440.   65:     RESET                 ; Restore dfts to load-time values
  8441.   65:     RESTORE [ALL]             ; Restore last SAVEd area on screen
  8442.   65: -> RETURN              ; Return from GOSUB
  8443.   65:     REWIND              ; Rewind input file
  8444.   66: -> RFLUSH              ; Flush receive buffer
  8445.   66: -> RGET Sx [<number> [<number>]]     ; Read comm, <count> <timeout secs>
  8446.   67:     RND <modulus> Nx         ; Return random number
  8447.   66:     RJ Sx                 ; Right justify string variable
  8448.   67: -> RUN <string> [WAIT]         ; Load and execute a program
  8449.   67:     SAVE row col row col         ; Save an area on the screen
  8450.   68:     SCALL <addr> [parms[,parms]]     ; Call OVERLAY at <addr> w/<parms>
  8451.   68: -> SCROLL cnt row col row col attr ; Scroll a region on the screen
  8452.   68:     SCREEN row col row col attr Sx  ; Multiline screen display
  8453.   69: -> SENDFILE ASCII     <string>     ; Upload: A.K.A. Buffer capture
  8454.   69:     SENDFILE BPLUS          ; ..       CompuServe B+ protocol
  8455.   69: -> SENDFILE BYMODEM   <string>     ; ..       Batch YMODEM (True YM)
  8456.   69: -> SENDFILE BYMODEMG  <string>     ; ..       Streaming YMODEM (batch)
  8457.   69: -> SENDFILE CISB             ; ..       CompuServe B-protocol
  8458.   69: -> SENDFILE KERMIT    <string>     ; ..       Kermit or SuperKermit
  8459.   69:     SENDFILE QUICKB         ; ..       CompuServe Quick B
  8460.   69: -> SENDFILE RXMODEM   <string>     ; ..       Relaxed CRC/Chksum XMODEM
  8461.   69: -> SENDFILE WXMODEM   <string>     ; ..       Windowed XMODEM
  8462.   69: -> SENDFILE XMODEM    <string>     ; ..       CRC or Checksum XMODEM
  8463.   69: -> SENDFILE YMODEM    <string>     ; ..       Simple YMODEM (XMODEM1k)
  8464.   69:     SENDFILE ZMODEM    <string>     ; ..       ZMODEM transfer (batch)
  8465.  
  8466.  
  8467.  
  8468.  
  8469. Version 2.9: 921203                           Appendices
  8470.  
  8471. COM-AND: IBM PC Communications Script Language                 Page 151
  8472.  
  8473.  
  8474. N.    Language Summary (continued)
  8475.  
  8476.  
  8477.   Page     Syntax              Comment
  8478.   ------ ------------------------------- -----------------------------
  8479.   85: -> SET <subcommand>         ; See below
  8480.   69: -> SHELL                 ; SHELL to DOS (exit shell manually)
  8481.   70:     SNAME Sx             ; Read name of current script file
  8482.       *  SNAPSHOT             ; Unimplemented
  8483.   70: -> SOUND Nx Ny             ; Sound tone, freq Nx for Ny msecs
  8484.   70:     SSIZE Nx             ; Read number of screen lines
  8485.   71:     STACK <string>          ; Store <string> in BIOS kbd buffer
  8486.   71:     STACK CLEAR             ; Clear BIOS keyboard buffer
  8487.   71:     STORE (DEFA!DIAL!MACR!ACCE)     ; Create new settings file
  8488.   71:     STORE (STRING!NUMERIC!ALLOC!FSAVEI!FSAVEO) <file>
  8489.   72: -> STRCAT Sx Sy             ; Concatenate Sy onto Sx strings
  8490.   72: -> STRCMP Sx Sy             ; Compare Sy to Sx (case sensitive)
  8491.   72: -> STRCPY Sx Sy             ; Copy Sy into Sx
  8492.   73: -> STRFMT Sx <fmtstr> <parms>     ; Format Sx using <fmtstr> w/<parms>
  8493.   74: -> SUB Nx Ny Nz             ; Nz = Nx-Ny
  8494.   74:     SUBDIR Sx             ; Read d:subdir into Sx
  8495.   74: -> SUBSTR Sx Sy <number> <number>  ; Take substr from Sy, place in Sx
  8496.   75:     SUSPEND FOR Nx Ny         ; Suspend for duration (h,m)
  8497.   75: -> SUSPEND UNTIL Nx Ny         ; Suspend until time (h,m; military)
  8498.   76: -> SWITCH (Sx!Nx)          ; Transfer control to CASE/DEFAULT
  8499.  
  8500.       ->    SWITCH (Sx!Nx)            ; Declare variable to test
  8501.       ->       CASE (<string>!<number>)     ; Match Sx and <string>
  8502.            ...                ; .. Execute if they match
  8503.       ->       ENDCASE                ; Each case must have an ENDCASE
  8504.       ->       CASE <string>            ; <String> = "_NULL" -> empty
  8505.            ...
  8506.       ->       ENDCASE                ; End of second case
  8507.            ...
  8508.       ->       DEFAULT                ; DEFAULT executed if no case
  8509.            ...                ; .. above matched
  8510.       ->       ENDCASE                ; End of DEFAULT case, too
  8511.       ->    ENDSWITCH                ; End of SWITCH domain
  8512.  
  8513.   77:     Sx(m:n) = expression         ; Compute expression and assign
  8514.   77: -> TERMINAL             ; Exit script (terminal mode)
  8515.   78: -> TIME Sx [0!1]             ; Read system time (1->military fmt)
  8516.   78: -> TRACE (ON!OFF)          ; Control script tracing
  8517.   78: -> TRANSMIT <string>         ; Send <string> out comm port
  8518.   78:     TSINCE [(#)] Nx Ny Nz         ; Read time since timer (#) in h,m,s
  8519.   79: -> TYPE <string>             ; Display contents of a file (Alt-W)
  8520.  
  8521.  
  8522.  
  8523.  
  8524. Version 2.9: 921203                           Appendices
  8525.  
  8526. COM-AND: IBM PC Communications Script Language                 Page 152
  8527.  
  8528.  
  8529. N.    Language Summary (continued)
  8530.  
  8531.  
  8532.   Page     Syntax              Comment
  8533.   ------ ------------------------------- -----------------------------
  8534.   79:     UNTIL <condition as IF>     ; Terminate a DO-Loop
  8535.   79:     UPDATE              ; Update default file (LOAD DEFA)
  8536.   79:     UPPER Sx             ; Upper case contents of Sx
  8537.   79:     VERSION Nx             ; Read COM-AND version number
  8538.   80: -> WAITFOR <string> [<number>]     ; Wait for rcvd string, time in secs
  8539.   80:     WCLOSE [ALL]             ; Close an open screen window
  8540.   81: -> WHEN [(#)] <string> <string>     ; Auto response; <target> <response>
  8541.   82:     WHILE <condition>         ; Begin a conditional loop if true
  8542.  
  8543.         WHILE <condition>            ; Example
  8544.            ...                ; Example
  8545.            ENDWHILE             ; Example
  8546.  
  8547.   83:     WOPEN row col row col attr [label] ; Open screen window
  8548.   84:     WRITE Sx [Nx]             ; Write a record (Nx optional)
  8549.  
  8550.  
  8551.  
  8552.  
  8553.  
  8554.  
  8555.  
  8556.  
  8557.  
  8558.  
  8559.  
  8560.  
  8561.  
  8562.  
  8563.  
  8564.  
  8565.  
  8566.  
  8567.  
  8568.  
  8569.  
  8570.  
  8571.  
  8572.  
  8573.  
  8574.  
  8575.  
  8576.  
  8577.  
  8578.  
  8579. Version 2.9: 921203                           Appendices
  8580.  
  8581. COM-AND: IBM PC Communications Script Language                 Page 153
  8582.  
  8583.  
  8584. N.    Language Summary (continued)
  8585.  
  8586.  
  8587.   Page     Syntax              Comment
  8588.   ------ ------------------------------- -----------------------------
  8589.   85:     SET 25              ; Set screen to CGA/Mono mode
  8590.   85:     SET 43              ; Set screen to EGA/VGA mode
  8591.   85:     SET ACCE NAME # <string>     ; Write acc dir entry name field
  8592.   85:     SET ACCE SUBD # <string>     ; Write acc dir entry subdir field
  8593.   85:     SET ACCE PGM  # <string>     ; Write acc dir entry pgm field
  8594.   85:     SET ACCE SCRI # <string>     ; Write acc dir entry script field
  8595.   85:     SET ADVERT (ON!OFF)         ; Set initial advertisement
  8596.   85: -> SET ALARM (ON!OFF)         ; Control alarm sound (see ATIME)
  8597.   85:     SET ANYWHEN (ON!OFF)         ; WHEN exact (OFF), or substr (ON)
  8598.  101:->  SET ASCII <subcommand>      ; See below
  8599.   85: -> SET ATIME <number>         ; Set alarm time in seconds
  8600.   85: -> SET BACKSPACE IN (NONDEST!DEST) ; Set backspace function when rcv'd
  8601.   85: -> SET BACKSPACE OUT (BACK!DELETE) ; Set backspace function when sent
  8602.   85:     SET BAR <attr>          ; Set status line color
  8603.   85: -> SET BAUDRATE (300!1200!2400!4800!9600!14K!19K!38K!57K!115K)
  8604.   85:     SET BELL #             ; Set bell tone in Hz
  8605.   85:     SET BKSCREEN #          ; Set backscreen size 0-64
  8606.  102:     SET BPLUS <subcommand>      ; See below
  8607.   85: -> SET BREAK <number>         ; Set break duration, in ms
  8608.   85:     SET BSUPPRESS (ON!OFF)      ; Set blank line suppression
  8609.   85:     SET CALLLOG (ON!OFF)         ; Set/reset call logging
  8610.   85:     SET CDISPLAY (ON!OFF)         ; Set control character display
  8611.   85:     SET CDRESPECT (ON!OFF)      ; Set CD (carrier detect) respect
  8612.   85:     SET CHAT (ON!OFF)         ; Open/close chat mode
  8613.   85:     SET CHLINES #             ; Specify chat window size
  8614.   85:     SET CLOCK (ON!OFF!NEW)      ; Screen clock (NEW -> reset time)
  8615.   85:     SET COLOR (ON!OFF)         ; Set/reset color screen
  8616.   85:     SET COMBASE <port> Nx         ; Specify base address for COMx
  8617.   85:     SET COMVECTOR <port> Nx     ; Specify vector number for COMx
  8618.   85: -> SET CR     (CR!CR_LF)         ; Set CR received as CR or CR/LF
  8619.   85: -> SET CR_IN  (CR!CR_LF)         ; Set CR received as CR or CR/LF
  8620.       *  SET CR_OUT (CR!CR_LF)         ; Unimplemented
  8621.   85: -> SET DATABITS (7!8)         ; Set comm parameter
  8622.   85:     SET DEFAULT <attr>         ; Set menu window color
  8623.   85:     SET DBLCLICK #          ; Set double click interval in MS
  8624.   85:     SET DDACODE <string>         ; Declare Alt-D area code string
  8625.   85:     SET DDOVERRIDE ON!OFF         ; Override Alt-D speed value
  8626.   85:     SET DDPREFIX <string>         ; Declare Alt-D 'all call' prefix
  8627.   85:     SET DIAL NAME # <string>     ; Write dial dir entry name field
  8628.   85:     SET DIAL NUMB # <string>     ; Write dial dir entry number field
  8629.   85:     SET DIAL RATE # <string>     ; Write dial dir entry rate field
  8630.   85:     SET DIAL PARI # <string>     ; Write dial dir entry parity field
  8631.  
  8632.  
  8633.  
  8634. Version 2.9: 921203                           Appendices
  8635.  
  8636. COM-AND: IBM PC Communications Script Language                 Page 154
  8637.  
  8638.  
  8639. N.    Language Summary (continued)
  8640.  
  8641.  
  8642.   Page     Syntax              Comment
  8643.   ------ ------------------------------- -----------------------------
  8644.   85:     SET DIAL DATA # <string>     ; Write dial dir entry dbits field
  8645.   85:     SET DIAL STOP # <string>     ; Write dial dir entry stop field
  8646.   85:     SET DIAL ECHO # <string>     ; Write dial dir entry echo field
  8647.   85:     SET DIAL SCRI # <string>     ; Write dial dir entry script field
  8648.   85: -> SET DISPLAY (ON!OFF)         ; <PC+ 1.1 SET RDISP equivalent>
  8649.   85: -> SET DLDIR <string>         ; Set d:\path for downloads
  8650.   85:     SET DOSLEVEL <number>         ; Set COM-AND exit error level
  8651.   85:     SET DPREFIX <string>         ; Specify Alt-S dialing prefix
  8652.   85:     SET DROPDTR (ON!OFF)         ; Set hangup method
  8653.   85:     SET DSUFFIX <string>         ; Specify Alt-S dialing suffix
  8654.   85:     SET DTR (ON!OFF)         ; Raise/lower DTR to modem
  8655.   85: -> SET DUPLEX (HALF!FULL)      ; Set local echo
  8656.       *  SET ENQ ON             ; Unimplemented
  8657.   85:     SET ENQ (OFF!CISB)         ; Automatic CIS file up/dn, VIDTEX
  8658.   85:     SET EXIT <scriptname>         ; Set script for Alt-X, BYE
  8659.   85:     SET EXQUery (ON!OFF)         ; Set exit query flag
  8660.   85:     SET FATTR <file> Nx         ; Write file attributes
  8661.   85:     SET FAILURE (ON!OFF)         ; Set/reset FAILURE flag (IF test)
  8662.   85:     SET FLAG [(#)] (ON!OFF)     ; Set/reset flag variable
  8663.   85: -> SET FLOWCTRL (ON!OFF)         ; Set XON/XOFF flow control
  8664.   85:     SET FOUND (ON!OFF)         ; Set/reset FOUND flag (IF test)
  8665.   85: -> SET HARDFLOW (ON!OFF)         ; Set OLD RTS/CTS flow control
  8666.   85:     SET HMOUSE #             ; Set mouse horiz sensitivity
  8667.       *  SET HOSTPSWD <string>         ; Unimplemented
  8668.   85:     SET INAFTER (ON!OFF)         ; Set script intrinsics ON/OFF
  8669.   85:     SET INTRINSIC (ON!OFF)      ; Set init modem after hangup
  8670.   85:     SET IPOS <string>         ; Pos input file using numeric str
  8671.   85:     SET KBDBUFFER (ON!OFF)      ; Open/close keyboard display buffer
  8672.   103:-> SET KERMIT <subcommand>     ; See below
  8673.   85:     SET LD # <string>         ; Write LD dir entry (1-4)
  8674.   85:     SET LINKED (ON!OFF)         ; Set/reset LINKED flag (IF test)
  8675.   85:     SET MACRO # <string>         ; Write macro directory entry
  8676.   85:     SET MASK (ON!OFF)         ; Set 7/8 bit masking
  8677.   85:     SET MCONNECT <string>         ; Specify modem connect str (Alt-S)
  8678.   85:     SET MDCHar <value>         ; Set modem delay char ASCII value
  8679.   85:     SET MCR <value>         ; Set modem control reg value
  8680.   85:     SET MDELAY #             ; Specify interchar delay in ms
  8681.   85: -> SET MENUMODE (ON!OFF)         ; Enable/disable menu mode
  8682.   85:     SET MESCAPE <string>         ; Specify modem esc string (Alt-S)
  8683.   85:     SET MHANGUP <string>         ; Specify hangup string (Alt-S)
  8684.   85:     SET MINIT <string>         ; Specify modem init string (Alt-S)
  8685.   85:     SET MOUSE (ON!OFF)         ; Enable/disable mouse
  8686.   85:     SET MULTI (ON!OFF)         ; Set/reset PLAY defaulting
  8687.  
  8688.  
  8689. Version 2.9: 921203                           Appendices
  8690.  
  8691. COM-AND: IBM PC Communications Script Language                 Page 155
  8692.  
  8693.  
  8694. N.    Language Summary (continued)
  8695.  
  8696.  
  8697.   Page     Syntax              Comment
  8698.   ------ ------------------------------- -----------------------------
  8699.   85:     SET MUSIC (ON!OFF)         ; Allow/disallow music esc sequences
  8700.   85:     SET OPOS <string>         ; Pos output file using numeric str
  8701.   85:     SET OVENTRY (NONE!<address>)     ; Set overlay end-entry address
  8702.   85: -> SET PARITY (EVEN!ODD!NONE)     ; Set comm parameter
  8703.   85:     SET PCJR (ON!OFF)         ; Suspend comm during disk I/O
  8704.   85: -> SET PORT (COM1!COM2!COM3!COM4)  ; Set comm parameter
  8705.   85:     SET QUIET (ON!OFF)         ; Set bell suppression flag
  8706.   85: -> SET RDELAY <number>         ; Set Alt-D/R reconnect timeout
  8707.   85:     SET RDISPLAY (ON!OFF)         ; Enable/disable rcvd character disp
  8708.   85:     SET RDMAX <number>         ; Set redial limit count
  8709.   85:     SET RECHO (ON!OFF)         ; Enable/disable rcvd char echo
  8710.   85:     SET REMAP (ON!OFF)         ; Toggle remap (uses COM-AND.RMP)
  8711.   85: -> SET REMOTE (ON!OFF)         ; Allow remote command processing
  8712.   85: -> SET REMFTNS (ON!OFF)         ; Set/reset remote ftn key usage
  8713.   85:     SET RLEOK (ON!OFF)         ; Allow/disallow RLE displays
  8714.   85:     SET RMODE (ASCII!BINARY)     ; Set RGET mode (nulls, BS/rubout)
  8715.   85:     SET RTS (ON!OFF)         ; Set/reset modem RTS bit on port
  8716.   85:     SET RTSD (ON!OFF)         ; Set/reset modem RTS discipline
  8717.   85:     SET RTSF (ON!OFF)         ; Set RTS flow control (BIDIRECT)
  8718.       *  SET SCROLL (ON!OFF)         ; Unimplemented
  8719.       *  SET SHELLPSWD <string>      ; Unimplemented
  8720.   85:     SET SILENCE <seconds>         ; Set ON SILENCE duration in seconds
  8721.   85:     SET SLOWOUT (ON!OFF)         ; Set slow writes for transfers
  8722.   85: -> SET SOFTFLOW (ON!OFF)         ; Set XON/XOFF flow control
  8723.       *  SET SOUND (ON!OFF)         ; Unimplemented
  8724.   85: -> SET STOPBITS (1!2)         ; Set comm parameter
  8725.   85: -> SET STATUS (ON!OFF)         ; Enable/disable status line
  8726.   85:     SET SUCCESS (ON!OFF)         ; Set/reset SUCCESS flag (IF test)
  8727.   85: -> SET SWRITE (BIOS!DIRECT!DOS)     ; Set screen I/O method
  8728.   85:     SET TEXT <attr>         ; Set text window color
  8729.   85:     SET TIMER [(#)]         ; Start timer number (#) now
  8730.   85: -> SET TRANSLATE (ON!OFF)      ; Toggle xlate (uses COM-AND.XLT)
  8731.   85:     SET TTHRU (ON!OFF)         ; Set typethrough
  8732.   85:     SET TUNE <string>         ; Set alarm tune using encoded str
  8733.       *  SET TXPACE <number>         ; Implemented as SET ASCII CHARPACE
  8734.   85:     SET VMOUSE #             ; Set mouse vertical sensitivity
  8735.   85:     SET WAITFOR (ON!OFF)         ; Set/reset WAITFOR flag (IF test)
  8736.   85:     SET WATCHDOG <secs>         ; Set XOFF timeout in seconds
  8737.   85: -> SET WRAP (ON!OFF)         ; Enable/disable line wrap at eol
  8738.   85:     SET XBAUD (DFT!<speed>)     ; Set xfer efficiency max rate
  8739.   85:     SET XSUI <number>         ; Set xfer screen update interval
  8740.   104:     SET ZMODEM <subcommand>     ; See below
  8741.  
  8742.  
  8743.  
  8744. Version 2.9: 921203                           Appendices
  8745.  
  8746. COM-AND: IBM PC Communications Script Language                 Page 156
  8747.  
  8748.  
  8749. N.    Language Summary (continued)
  8750.  
  8751.  
  8752.   Page     Syntax              Comment
  8753.   ------ ------------------------------- -----------------------------
  8754.   101:-> SET ASCII BLANKEX (ON!OFF)     ; Set blank line expansion
  8755.   101:-> SET ASCII CHARPACE <number>     ; Set time in MS between characters
  8756.       *  SET ASCII DN_CR (CR!CR_LF!STRIP); Unimplemented
  8757.       *  SET ASCII DN_LF (CR!CR_LF!STRIP); Unimplemented
  8758.   101:-> SET ASCII ECHO (ON!OFF)     ; Set local echo during send
  8759.   101:     SET ASCII FLOW (ON!OFF)     ; Set flow control (during send)
  8760.   101:-> SET ASCII LINEPACE <number>     ; Set delay between lines (1/10 sec)
  8761.   101:-> SET ASCII PACECHAR <number>     ; Set prompt from host (dec value)
  8762.   101:     SET ASCII QUIET (ON!OFF)     ; Enable/disable alarm after SEND
  8763.   101:     SET ASCII TABEX (ON!OFF)     ; Set tab expand during ASCII send
  8764.       *  SET ASCII UP_CR (CR!CR_LF!STRIP); Unimplemented
  8765.   101:-> SET ASCII UP_LF (LF!CR_LF!STRIP); Set LF handling; CR_LF unimpl.
  8766.   101:     SET ASCII UP_Z (STOP!SEND)     ; Set ASCII send end on ctl-z
  8767.  
  8768.   102:     SET BPLUS RECOVER (ON!OFF)     ; Allow/disallow download recovery
  8769.  
  8770.   103:-> SET KERMIT 8QUOTE <number>     ; Set 8 bit quoting character
  8771.   103:-> SET KERMIT BLOCKCHECK (1!2!3)     ; Set block check character length
  8772.   103:-> SET KERMIT CQUOTE <number>     ; Set control quoting character
  8773.   103:-> SET KERMIT EOLCHAR <number>     ; Set end of packet character
  8774.       *  SET KERMIT HANDSHAKE <number>     ; Unimplemented
  8775.       *  SET KERMIT FILETYPE (TEXT!BINA) ; Unimplemented
  8776.   103:     SET KERMIT MARK <number>     ; Set first packet character
  8777.       *  SET KERMIT PACKSIZE <number>     ; Unimplemented
  8778.   103:-> SET KERMIT PADCHAR <number>     ; Set inter-packet pad character
  8779.   103:-> SET KERMIT PADNUM number     ; Set count of pads inter-packet
  8780.   103:     SET KERMIT REPEAT <number>     ; Set repeat quoting character
  8781.   103:     SET KERMIT WINDOW <number>     ; Set window size (max 8)
  8782.  
  8783.   104:     SET ZMODEM AUTO (ON!OFF)     ; Allow/disallow auto downloading
  8784.   104:     SET ZMODEM BLOCK <number>     ; Set max block (0 to reset)
  8785.   104:     SET ZMODEM RECOVER (ON!OFF)     ; Allow/disallow download recovery
  8786.  
  8787.  
  8788.  
  8789.  
  8790.  
  8791.  
  8792.  
  8793.  
  8794.  
  8795.  
  8796.  
  8797.  
  8798.  
  8799. Version 2.9: 921203                           Appendices
  8800.